请大神解答......下面这段代码运行结果就是Opengl控制台黑屏的结果么?glut教程(三)的代码。谢谢啦!!

//openGL.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<gl/glut.h>#include<gl/glu.h>#... // openGL.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<gl/glut.h>
#include<gl/glu.h>
#include<gl/gl.h>

void renderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glutSwapBuffers();
}
void changeSize(int w, int h) {
// 防止除数即高度为0,(你可以设置窗口宽度为0).
if(h == 0)
h = 1;
float ratio = 1.0* w / h;
// 单位化投影矩阵。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// 设置视口大小为增个窗口大小
glViewport(0, 0, w, h);
// 设置正确的投影矩阵
gluPerspective(45,ratio,1,1000);
//下面是设置模型视图矩阵
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0,0.0,5.0, 0.0,0.0,-1.0, 0.0f,1.0f,0.0f);
}
int _tmain(int argc, _TCHAR* argv[])
{
glutInit(&argc, (char**) argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("Hello OpenGL");
glutDisplayFunc(renderScene);
glutReshapeFunc(changeSize);
glutMainLoop();//enters the GLUT event processing loop.
return 0;
}
展开
 我来答
百度网友1c6e06f
2014-02-10 · TA获得超过2894个赞
知道小有建树答主
回答量:695
采纳率:66%
帮助的人:654万
展开全部
我看到的错误是在renderScene的开头调用glLoadIdentity接口,这个接口是把当前(投影或模型)矩阵设为单位矩阵的,一般是当窗口大小改变时(比如你的changeSize函数)需要重新设置投影和模型矩阵时才调用,重绘时不需要再调用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式