我有一些问题与我写的一个opengl应用程序。
GLenum err = 0;
glEnable( GL_DEPTH_TEST );
err = glGetError();
if ( err != GL_NO_ERROR )
printf( "Error: %s\n",glewGetErrorString( err ) );
上面的代码将未知错误打印到控制台,当我单步执行时,我得到1280代码。我已经在khronos页面上查看了glEnable,并且有enum,那么这为什么会引起问题呢?我查过错误代码,它是一个无效的枚举,但这怎么可能呢?
我不认为这个错误来自glEnable(GL_DEPTH_TEST)
;
code1280
表示GL_INVALID_ENUM
;
我以前遇到过这个错误。在我的情况下,我错误地将一个renderer_程序
传递给glEnable
方法。将正确的枚举传递给该方法后,OpenGL不会告诉任何错误。
所以,也许你需要关注代码的其他部分。
您确定错误来自glEnable(GL_DEPTH_TEST);
调用吗?
你可以试试这个:
PrintErrors(); // Test for previous error
glEnable(GL_DEPTH_TEST);
PrintErrors();
...
void PrintError() {
GLenum err;
for(;;) {
err = glGetError();
if (err == GL_NO_ERROR) break;
printf("Error: %s\n", glewGetErrorString(err));
}
}
错误0x500/1280表示GL_INVALID_ENUM
,这意味着函数调用中不允许有一个枚举数。显然,这不应该发生在GL_DEPTH_TEST
中,自从OpenGL 1.0以来,glEnable
中就允许这种情况。以下是发生这种情况的所有可能原因:
GL_DEPTH_TEST
错误的值。GL_DEPTH_TEST
的值应该是0x0B71。或者,它可能在glEnable
中放置了错误的函数。为了测试这一点,您可以调试库的初始化函数,或者您可以使用glIntercept或类似的工具来准确查看正在调用的函数。在坐标系统小节中,我们渲染了一个3D箱子,并且运用了深度缓冲(Depth Buffer)来防止被阻挡的面渲染到其它面的前面。在这一节中,我们将会更加深入地讨论这些储存在深度缓冲(或z缓冲(z-buffer))中的深度值(Depth Value),以及它们是如何确定一个片段是处于其它片段后方的。 深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了
大家都知道立方体的顶点数据经过顶点着色器、光栅、片元着色器等渲染管线单元处理后会得到立方体每个面的片元数据, 每个片元不仅包含RGB像素值,还有透明度分量A,片元的深度值Z,屏幕坐标(X,Y)等数据。 屏幕坐标(X,Y) 屏幕坐标指的是每一个片元的像素值在显示器canvas画布上的显示位置,如果一个网页上有多个canvas画布,或者打开多个包含canvas画布的网页窗口, 每一个引入WebGL的c
我正在使用Qt/openGL,激活深度缓冲区时遇到了一些问题。 在每一帧,我激活以下状态:glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); 另外,我检查了我的深度缓冲区的大小不是空的(glGetIntegerv(GL_DEPTH_BITS)给我24,这是预期的值),但是深度测试不起作用,一些应该通过深度测试丢弃的片段不起作用。 知道吗?
jasmine:在jasmine指定的超时内没有调用异步回调。DEFAULT_TIMEOUT_INTERVAL 测试window.post消息指令 用Jasmine async测试postMessage不起作用 我有下面的代码,我正在接收下面的输出。 在jasmine.DEFAULT\u timeout\u INTERVAL指定的超时内未调用异步回调 myService在父描述函数中定义。正如我所
👥面试题目 java多线程的线程状态,多线程用什么库比较多 考察的知识点: Java多线程基础:理解Java线程生命周期的状态及其转换。 多线程编程技术:熟悉Java中用于实现多线程编程的技术栈。 并发工具类:掌握java.util.concurrent包中提供的高级并发工具类。 线程安全性和效率:了解如何在保证线程安全性的同时提高程序效率。 需要从哪些方面来作答: 线程状态:解释Java线程的