vs2010,配置好后opengl运行这段代码之处,不显示图像,只有一个白色背景,求教什么原因
#include"gl/glut.h"voidmyDisplay(void){glClear(GL_COLOR_BUFFER_BIT);glRectf(-0.5f,-0....
#include "gl/glut.h"
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGl程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
} 展开
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGl程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
} 展开
2个回答
展开全部
你打算用glRectf画什么颜色的矩形?你没指定颜色,恰好当前颜色又是白色,那么画出来也看不出来的..
试试这样
void myDisplay(void)
{
glClearColor (0.0f, 0.0f, 1.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(1.0f, 1.0f, 0.0f, 0.0f);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
试试这样
void myDisplay(void)
{
glClearColor (0.0f, 0.0f, 1.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(1.0f, 1.0f, 0.0f, 0.0f);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
更多追问追答
追问
glClear(GL_COLOR_BUFFER_BIT);的默认颜色是黑色啊。。我也试了你的这段代码,还是不行。感觉是不是有别的原因。
http://zhidao.baidu.com/link?url=wEHNjDa8XZtPRnCnDveRj8aXaMFjabXR_JYcprdvytA6mXd-aH12mEDEoG6mfNY2RifVMLX2jh4a9n7Nf7bie_
是按照这个配置的
追答
那个..glut库很古老的,作者有十多年都不更新了,按照opengl超级宝典的推荐,用freeglut代替比较好,毕竟还在更新着..
我不太清楚有什么问题,试试把渲染函数中要做的初始化全写出来吧
void myDisplay( void )
{
glClearColor (0.0f, 0.0f, 1.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glViewport (0, 0, 400, 400);
glOrtho (-1, 1, -1, 1, -13, 13);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
glColor4f(1.0f, 1.0f, 0.0f, 0.0f);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glutSwapBuffers ();
}
另外加一个定时刷新窗口的函数回调
void timerFunc( int id )
{
glutPostRedisplay ();
glutTimerFunc (16, timerFunc, 1); // 定时函数注册一次只会调用一次,所以要在执行之后重新注册
}
在main函数中加一句
glutTimerFunc (16, timerFunc, 1); // 16是定时间隔16毫秒,1是为了用来区分多个定时函数的序号
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询