1
由於某些原因,我不能在openGL中繪製任何過去z> 1的東西。 Z緩衝區工作正常,我暫時停留了一段時間。 我認爲問題是gluPerspective,但它仍然無法正常工作。 我可以看到0和1之間的任何東西,代碼apears剪切的三角形。 對不起,我英文很差。OpenGL剪輯Z> 1.0
#include <iostream>
#include <GL/glut.h>
using namespace std;
void idle() {
glutPostRedisplay();
}
void changeSize(int w, int h) {
// Prevent a divide by zero, when window is too short
// (you cant make a window of zero width).
if(h == 0)
h = 1;
float ratio = 1.0* w/h;
// Use the Projection Matrix
glMatrixMode(GL_PROJECTION);
// Reset Matrix
glLoadIdentity();
// Set the viewport to be the entire window
glViewport(0, 0, w, h);
// Set the correct perspective.
gluPerspective(0, ratio, 0.1, 1000.0);
// Get Back to the Modelview
glMatrixMode(GL_MODELVIEW);
}
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,2.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(800,600);
glutCreateWindow("OpenGL");
glutDisplayFunc(renderScene);
glutReshapeFunc(changeSize);
glutIdleFunc(idle);
glEnable(GL_DEPTH_TEST);
glutMainLoop();
return 0;
}
調用'gluPerspective'應該導致錯誤,什麼都不做?如果屬實,那麼根本沒有變換,連接到第三點的兩條線被剪切,最後顯示出一個奇怪的四邊形。 – 2012-03-29 20:23:29
它活着,謝謝! – TheVTM 2012-03-29 20:23:35
@Tim:OP確實看到了一些東西,因爲gluPerspective調用的0 FOV使它在不改變投影矩陣的情況下儘早返回,從而使其保持一致。因此,可見體積是框-1,-1,-1至+ 1,+ 1,+ 1,這也解釋了剪切。 – datenwolf 2012-03-29 21:15:38