VC++OpenGl环境,单文档框架。
程序的功能是:先开三维数据文件,并显示三维图形 ;然后单击菜单,响应事件是 对满足特定条件的三维图形上的点进行染色。
为什么颜色涂不上去?原因是染色程序的问题?还是因为绘制三维图形时候的坐标和窗口坐标不统一?还是绘制函数不能放在响应函数里?
大侠指教啊,谢谢了。主要代码贴出来void CRenderView::OnPaint()
{
// Device context for painting
CPaintDC dc(this);
// Useful in singledoc templates
HWND hWnd = GetSafeHwnd();
HDC hDC = ::GetDC(hWnd);
wglMakeCurrent(hDC,m_hGLContext);//绘制显示三维图形的函数
DrawWithOpenGL();
SwapBuffers(hDC); //dc.m_ps.hdc
}//菜单响应函数
void CRenderView::OnSeg()
{
// TODO: Add your command handler code here
MessageBox("开始涂色.....");
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f,0.0f,0.0f); //为了测试程序方便,我把响应函数的功能改为绘制一个点(但最后程序运行时只是三维图像能够显示了,点击菜单后没有描绘出点)
glBegin(GL_POINT);
glVertex3f(30,30,30);
glPointSize(100.0);
glEnd();
glFlush();
Invalidate(false);
MessageBox("涂色结束.....");
}
求帮助啊谢谢了
程序的功能是:先开三维数据文件,并显示三维图形 ;然后单击菜单,响应事件是 对满足特定条件的三维图形上的点进行染色。
为什么颜色涂不上去?原因是染色程序的问题?还是因为绘制三维图形时候的坐标和窗口坐标不统一?还是绘制函数不能放在响应函数里?
大侠指教啊,谢谢了。主要代码贴出来void CRenderView::OnPaint()
{
// Device context for painting
CPaintDC dc(this);
// Useful in singledoc templates
HWND hWnd = GetSafeHwnd();
HDC hDC = ::GetDC(hWnd);
wglMakeCurrent(hDC,m_hGLContext);//绘制显示三维图形的函数
DrawWithOpenGL();
SwapBuffers(hDC); //dc.m_ps.hdc
}//菜单响应函数
void CRenderView::OnSeg()
{
// TODO: Add your command handler code here
MessageBox("开始涂色.....");
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f,0.0f,0.0f); //为了测试程序方便,我把响应函数的功能改为绘制一个点(但最后程序运行时只是三维图像能够显示了,点击菜单后没有描绘出点)
glBegin(GL_POINT);
glVertex3f(30,30,30);
glPointSize(100.0);
glEnd();
glFlush();
Invalidate(false);
MessageBox("涂色结束.....");
}
求帮助啊谢谢了
{
isHit = !isHit;
}
在绘制函数中:DrawWithOpenGL判断:
if (isHit)
//染色,
else
//正常绘制。
在glEnd(GL_POINT);之后再glDisable(GL_COLOR_MATERIAL);
这样模型就不会被染色了
另外如果点没有画出来,也许是你点的尺寸设置的太大了,把100改为3试试