以下是使用SubWindows
繪製LorenzAttractor
的cpp代碼。請讓我知道爲什麼代碼沒有顯示..奇怪爲什麼連座標軸不顯示任何元..爲什麼這個openGL代碼不能輸出任何內容?
- 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();
}
}
}
將問題簡化爲可粘貼到問題中的版本。你的代碼有很多不相干的東西,比如鍵盤處理。你甚至可能在這個過程中發現自己的錯誤。 –
@MarceloCantos完成..我粘貼上面的重要功能..對不起以前的帖子..需要一些適當的睡眠:.. .. – Aditya369