似乎无法使GLFW/OpenGL深度测试正常工作
我无法在任何项目中使用codeblocks使用GLFW进行深度测试,即使在启动新项目时使用codeblocks提供的默认模板,如下所示 非常感谢您的帮助,因为我知道我一定是做错了什么,但我一直没能找到似乎无法使GLFW/OpenGL深度测试正常工作,opengl,codeblocks,glfw,Opengl,Codeblocks,Glfw,我无法在任何项目中使用codeblocks使用GLFW进行深度测试,即使在启动新项目时使用codeblocks提供的默认模板,如下所示 非常感谢您的帮助,因为我知道我一定是做错了什么,但我一直没能找到 #include <GL/glfw.h> int main() { int width, height; int frame = 0; bool running = true; glfwInit(); if( !glfwOpenWindow( 512, 51
#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;
#包括
int main()
{
int宽度、高度;
int帧=0;
bool running=true;
glfwInit();
如果(!glfwOpenWindow(512、512、0、0、0、0、0、0、GLFW_窗口))
{
glfwTerminate();
返回0;
}
glfwSetWindowTitle(“GLFW应用程序”);
glEnable(GLU深度试验);
(跑步时)
{
frame++;
GLFWGetWindowsSize(宽度和高度);
高度=高度>0?高度:1;
glViewport(0,0,宽度,高度);
glClearColor(0.0f、0.0f、0.0f、0.0f);
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glMatrixMode(GL_投影);
glLoadIdentity();
透视图(65.0f,(GLfloat)宽度/(GLfloat)高度,1.0f,100.0f);
//画一些旋转垃圾
glMatrixMode(GLU模型视图);
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(帧,0.25f,1.0f,0.75f);
glBegin(GL_三角形);
GL3F(0.1f、0.0f、0.0f);
glVertex3f(0.0f,3.0f,-4.0f);
GL3F(0.0f,1.0f,0.0f);
glVertex3f(3.0f,-2.0f,-4.0f);
GL3F(0.0f、0.0f、1.0f);
glVertex3f(-3.0f,-2.0f,-4.0f);
格伦德();
glBegin(GL_三角形);
GL3F(0.0f、0.1f、0.0f);
glVertex3f(0.0f,3.0f,-3.0f);
GL3F(0.0f、0.0f、1.0f);
glVertex3f(3.0f,-2.0f,-2.0f);
GL3F(1.0f,0.0f,0.0f);
glVertex3f(-3.0f,-2.0f,2.0f);
格伦德();
glfwSwapBuffers();
//如果按下ESC键或窗口关闭,则退出
运行=!glfwGetKey(GLFW_KEY_ESC)和&glfwGetWindowParam(GLFW_打开);
}
glfwTerminate();
返回0;
}来自(强调矿):
depthbits:用于深度缓冲区的位数(0表示没有深度缓冲区)
以及您的代码:
glfwOpenWindow( 512, 512, 0, 0, 0, 0, 0, 0, GLFW_WINDOW )
^ no depth bits
如果没有任何深度位,则无法(有效地)使用深度缓冲区。来自(强调矿):
depthbits:用于深度缓冲区的位数(0表示没有深度缓冲区)
以及您的代码:
glfwOpenWindow( 512, 512, 0, 0, 0, 0, 0, 0, GLFW_WINDOW )
^ no depth bits
如果没有深度位,则无法(有效地)使用深度缓冲区。谢谢,建议使用多少深度位?16还是24?@whail:GLFW\u DEPTH\u BITS的默认值是
24
,听起来很合理。谢谢,建议使用多少深度位?16还是24?@whail:GLFW\u DEPTH\u BITS的默认值是24
,听起来很合理。