为什么这个openGL代码没有输出任何东西
Why is this openGL code not outputing anything?
以下是使用SubWindows
绘制LorenzAttractor
的cpp代码。请让我知道为什么代码没有显示任何原语…很惊讶为什么连坐标轴都没有显示…
- Main.cpp http://pastebin.com/bGqcBzfJ
- OpenGLFramework.h http://pastebin.com/8L3gk5uD
- MyFramework.h http://pastebin.com/CZfskfVF
- LorenzAttractor.h http://pastebin.com/t6GN1khg
请原谅我在。h文件中编写函数。
编辑:OpenGLFramework是一个基类,正在被MyFramework类扩展。我设置参数,然后调用startFramework()
开始渲染屏幕上的数字。
我检查了我使用的每个OpenGL函数,但无法弄清楚为什么输出是黑屏。请提供一些调试OpenGL程序的工具。调试是一件让人头疼的事情:
代码片段:
void startFramework(int argc, char *argv[]) {
setInstance();
// Initialize GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowPosition(WINDOW_X_POSITION, WINDOW_Y_POSITION);
glutInitWindowSize(width, height);
mainWindow = glutCreateWindow(instance->title.c_str());
glutSetWindow(mainWindow);
// callbacks for main window
glutDisplayFunc(renderMainWindow);
glutReshapeFunc(changeSizeWrapper);
glutIdleFunc(renderSceneAllWrapper);
//subwindows
int subwindowWidth = (width - numberOfSubWindows * border) / numberOfSubWindows;
int subWindowHeight = height - border;
for(unsigned int i = 0; i < numberOfSubWindows; i++) {
subWindow[i] = glutCreateSubWindow(mainWindow, (i * width / numberOfSubWindows) + (border / 2), border / 2, subwindowWidth, subWindowHeight);
glutSetWindow(subWindow[i]);
glutDisplayFunc(renderWrapper);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
// register callbacks
//glutIgnoreKeyRepeat(1);
glutKeyboardFunc(processNormalKeysWrapper);
glutSpecialFunc(pressKeyWrapper);
glutSpecialUpFunc(releaseKeyWrapper);
glutMouseFunc(mouseButtonWrapper);
}
glutMainLoop();
}
renderWrapper()
将调用draw()
..
void draw() {
if( 1 == getNumberOfSubWindows() ) {
setWindowContext(0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
invokeGlutLookAt();
draw3DCoordinateAxis();
for(unsigned int i = 0; i < numLorenzAttractors; i++) {
lorenzAttractor[i].simulate();
}
glutSwapBuffers();
} else if( getNumberOfSubWindows() == numLorenzAttractors ) {
for(unsigned int i = 0; i < numLorenzAttractors; i++) {
setWindowContext(i);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
invokeGlutLookAt();
draw3DCoordinateAxis();
lorenzAttractor[i].simulate();
glutSwapBuffers();
}
}
}
好吧,如果你在draw()中设置矩阵,glLoadIdentity()应该在glMatrixMode(GL_MODELVIEW)之后,至少如果你想设置模型视图矩阵,我看不到投影矩阵。默认情况下,OpenGl只绘制所有3个维度[0,1]范围内的东西,你使用投影矩阵将其转换为你想要的角度和大小,所以如果你不设置投影矩阵,你将看不到任何东西。
无论如何,我甚至不明白你的代码是做什么的…
相关文章:
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 代码编译没有任何输出,入门程序
- 可能我知道为什么这段代码没有给出任何输出吗?
- 什么是现实中的"endl"(或任何输出操纵器)?它是如何实现的,它如何与操作员<<一起工
- 为什么下面的Hello World程序在PowerShell上没有显示任何输出?同一程序在CMD上显示正确的输出
- 执行此代码时,它不显示任何输出.为什么?
- 合并排序没有给我任何输出
- 编译器没有显示错误,但我没有得到任何输出.怎么了?
- 是给定代码中的任何更改,以便我可以为问题提供正确的输出
- 为什么我的代码在终端中没有输出任何内容.开始新行没有错误
- 无法输出任何内容
- 为什么这个程序不输出任何东西
- 函数不会从向量输出任何内容C++
- 提升 BCP 不输出任何文件?
- 按回车键后,程序没有输出任何结果.为什么会这样
- 任何 c++ 程序都不会输出任何内容
- 程序从不输出任何输出
- 为什么程序开头的cout语句没有输出任何东西?
- 为什么这个openGL代码没有输出任何东西
- 为什么signalhandler不输出任何东西?