似乎无法获得GLFW/OpenGL深度测试工作
问题描述:
我无法在任何项目中使用代码块来使用GLFW进行深度测试,即使使用代码块在开始新项目时提供的默认模板,如下所示。似乎无法获得GLFW/OpenGL深度测试工作
任何帮助非常感谢,因为我知道我一定在做错事,但我一直没能找到它。
#include <GL/glfw.h>
int main()
{
int width, height;
int frame = 0;
bool running = true;
glfwInit();
if(!glfwOpenWindow(512, 512, 0, 0, 0, 0, 0, 0, GLFW_WINDOW))
{
glfwTerminate();
return 0;
}
glfwSetWindowTitle("GLFW Application");
glEnable(GL_DEPTH_TEST);
while(running)
{
frame++;
glfwGetWindowSize(&width, &height);
height = height > 0 ? height : 1;
glViewport(0, 0, width, height);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f);
// Draw some rotating garbage
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0f, -10.0f, 0.0f,
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f);
//glTranslatef(1.0f, 1.0f, 0.0f);
glRotatef(frame, 0.25f, 1.0f, 0.75f);
glBegin(GL_TRIANGLES);
glColor3f(0.1f, 0.0f, 0.0f);
glVertex3f(0.0f, 3.0f, -4.0f);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(3.0f, -2.0f, -4.0f);
glColor3f(0.0f, 0.0f, 1.0f);
glVertex3f(-3.0f, -2.0f, -4.0f);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.0f, 0.1f, 0.0f);
glVertex3f(0.0f, 3.0f, -3.0f);
glColor3f(0.0f, 0.0f, 1.0f);
glVertex3f(3.0f, -2.0f, -2.0f);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(-3.0f, -2.0f, 2.0f);
glEnd();
glfwSwapBuffers();
// exit if ESC was pressed or window was closed
running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED);
}
glfwTerminate();
return 0;
}
答
从GLFW2 documentation(重点煤矿):
int glfwOpenWindow ( int width, int height, int redbits, int greenbits, int bluebits, int alphabits, int depthbits, int stencilbits, int mode )
depthbits:要使用的深度缓冲(0位的数目表示没有深度缓冲)。
并且代码:
glfwOpenWindow(512, 512, 0, 0, 0, 0, 0, 0, GLFW_WINDOW)
^no depth bits
你不能(有效),使用深度缓冲,没有任何深度位。
谢谢,什么是建议使用的深度位数? 16或24? – Whaill
@Whaill:[GLFW3 docs](http://www.glfw.org/docs/latest/window_guide.html)表示'GLFW_DEPTH_BITS'的默认值是'24',这对我来说听起来很合理。 – genpfault