我是OpenGL的新手,我对代码中的所有随机函数都有点不知所措.他们工作,我知道何时使用它们,但我不知道为什么我需要它们或他们实际做什么.
我知道glLoadIdentity()用当前矩阵替换当前矩阵,但究竟是做什么的呢?如果每个程序都需要它,除非另有说明,为什么默认情况下不是单位矩阵?除非我知道他们做了什么,否则我不喜欢在我的代码中使用函数.我应该注意到,我专门为丰富的2D客户端使用OpenGL,所以请原谅我的无知,如果这对于3D非常明显.
关于glMatrixMode(GL_PROJECTION)VS 也有点困惑glMatrixMode(GL_MODELVIEW).
我想使用'gluPerspective','glViewport'和'gluLookAt'来操纵我的相机和屏幕.
哪个函数适用于哪种矩阵模式?我应该以什么顺序使用它们?
例如,我试图像这样设置我的屏幕和相机:(但它不起作用!)
glMatrixMode(GL_PROJECTION) // Apply following to projection matrix - is this correct?
glLoadIdentity(); // Reset first
glPerspective(45.0, (double)w/(double)h, 1.0, 200.0); // Set perspective
glViewport(0, 0, w, h); // Set viewport
glMatrixMode(GL_MODELVIEW); // Apply following to modelview - should glViewport come under here?
glLoadIdentity(); // Reset first
gluLookAt(px, py, pz, cx, cy, cz, ux, uy, uz); // Set position, centre and then up vectors
// This surely comes after calling GL_MODELVIEW?
Run Code Online (Sandbox Code Playgroud)
我一直在寻找在线文档,我理解这些功能,而不是它们应该去的地方以及它们的顺序!
现在几个月后,我正在添加一个快速编辑,以显示我用于使用OpenGL渲染事物的系统.这是为了帮助将来看到这个问题的其他人.
我主要使用两种方法.
方法1:
此方法将所有内容组合在一
// …Run Code Online (Sandbox Code Playgroud)