如何实现用OpenGL绘制可以旋转的四边形?

feng0hua0 2009-03-27 11:03:19
在MFC环境下,我是这样处理的:
在OnDraw函数中调用我自己写的绘制函数:

void COpenGLView::myDraw()
{
rTri = GLfloat(0.3);
//设置绘图颜色为红色
glColor3f(255.0f,0.0f,0.0f);
//将中心点移到绘制屏幕左下角.
glTranslatef(-GLfloat(m_width/2),-GLfloat(m_length/2),0.0);
//三角型旋转

//绘制三角型
glBegin(GL_TRIANGLES);
//设置左下角颜色为红色
glColor3f( 1.0, 0.0, 0.0 );
glVertex3f( 0.0,0.0,0.0);
//设置右下角颜色为蓝色
glColor3f( 0.0, 1.0, 0.0 );
glVertex3f( 200.0,0.0,0.0 );
//设置顶点颜色为绿色
glColor3f( 0.0, 0.0, 1.0 );
glVertex3f( 100.0,100.0,0.0);
glEnd();

glRotatef( rTri, 1.0, 0.0, 0.0 );
rTri += GLfloat(0.2);
SwapBuffers(m_hDC);
glFlush();}


但是这样只能显示三角型,而且会出现2个问题:
1.在页面重绘,比如我切换窗口,再切换回来的时候.绘制的三角型又跑到屏幕中间去了.
2.不能实现旋转啊.如果一直用while(true)执行这个函数的时候,程序就会死循环,没有响应.
...全文
121 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
MildSong 2009-03-27
  • 打赏
  • 举报
回复
修改你的消息处理机制,大体上是这样

// 主消息循环:
while (!done)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
done = TRUE;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

myDraw();
}
}
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
算了...帖子沉了,结了.
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
遇到个问题,我在WinMain这个入口函数中加入消息处理函数,但是不能调用我的myDraw()函数,提示说"undeclared identifier",我对WinMain不熟悉,调用类内函数前需要先声明吗?

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧