- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我同时在纹理立方体旁边绘制了一个顶点彩色立方体,使用 glDrawArrays()
,并发现启用照明后,纹理立方体变得“稍微亮一些”。
经过一些调试,我发现第一刻 glEnable(GL_COLOR_MATERIAL)
被调用,即使 glDisable(GL_COLOR_MATERIAL)
之后立即调用,对带纹理的立方体产生“稍微亮一点”的效果!
以下是简短说明:
glEnable(GL_COLOR_MATERIAL);
glDisable(GL_COLOR_MATERIAL);
(...)
glDrawArrays(GL_QUADS, 0, n);
glEnable(GL_COLOR_MATERIAL)
根本没有调用,立方体是用黄色绘制的。
glEnable(GL_COLOR_MATERIAL)
被调用,即使后面跟着
glDisable(GL_COLOR_MATERIAL)
,立方体被绘制为稍微亮一点的黄色,我无法切换回“初始较暗的黄色立方体颜色”。
最佳答案
这不完全是预期的行为,但应该很容易修复。 GL_COLOR_MATERIAL 允许使用顶点颜色覆盖 Material 属性。错误是颜色不仅在顶点颜色规范上被重写,而且还在颜色 Material 启用上被重写(我的猜测是它可能是为了防止错误而故意完成的)。
要使立方体再次变暗,您需要做的就是使用 glMaterialfv() 恢复默认的颜色 Material 属性(可能是漫反射和环境颜色)。您可以找到 default material colors here .
关于OpenGL glEnable(GL_COLOR_MATERIAL) 后跟 glDisable(GL_COLOR_MATERIAL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965871/
在 OpenGL 中,我一直明白 glEnable(GL_TEXTURE_1D) , glEnable(GL_TEXTURE_2D)和/或 glEnable(GL_TEXTURE_3D) (和相应的
我有一个渲染系统,在该系统中,我使用多采样渲染缓冲区绘制到 FBO,然后将其传送到具有纹理的另一个 FBO 以解析样本,以便在绘制到后缓冲区时读取纹理以执行后处理着色( FBO 索引 0)。 现在我想
在 OpenGL 中,我展示了一个简单的模型。当我启用深度缓冲区时, glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); glDepthMask(GL_T
我目前正在研究阴影贴图。我找到了 Paul 的项目 http://www.paulsprojects.net/tutorials/smt/smt.html ,我目前正在尝试实现这一点。但我无法获得合适
我下面的程序必须显示一个用简单灯照亮的旋转立方体。 问题是立方体在闪烁。当我取消调用 glEnable(GL_DEPTH_TEST) 时,立方体没有闪烁,但我可以看到里面的面(这是正常的,因为没有深度
当我使用 glEnable 设置东西,或指定 func 到我启用的东西,然后切换帧缓冲区对象时,我的设置是否为每个帧缓冲区对象保留,或者我是否必须为每个帧缓冲区对象设置它们?在实践中,这行得通吗? g
glEnable 和 glEnableClientState 有什么区别?每次我需要设置/取消设置模式时,我都必须查看引用资料以了解哪些人会接受它。 O有什么一般规则可以说明哪些模式进入哪个模式? 最
当我在opengl es中启用光照时,我突然发现深度测试无法工作。一些物体在旋转后看起来是透明的。从这个角度看 handle 应该是看不见的。 我一开始就使用glEnable(GL_DEPTH_TES
我正在尝试使用 GL_POINT 对每 block 棋盘游戏进行编码(在 c 中,使用 opengl)。我有以下代码: glEnable(GL_POINT_SMOOTH);
我同时在纹理立方体旁边绘制了一个顶点彩色立方体,使用 glDrawArrays() ,并发现启用照明后,纹理立方体变得“稍微亮一些”。 经过一些调试,我发现第一刻 glEnable(GL_COLOR_
我有以下代码: glDisable(GL_COLOR_MATERIAL); cout<<(int)glIsEnabled(GL_COLOR_MATERIAL)<
我将 3 个数组指针传递给 opengl: glColorPointer() glNormalPointer() glVertexPointer() 一切正常,但是当我尝试通过 glEnable(GL
快速提问 - 标题说明了一切: 在我的 OpenGL 代码 (3.3) 中,我使用了这条线 glEnable(GL_ALPHA_TEST); 我已经使用我的代码好几个星期了,从来没有检查过错误(通过
在 OpenGL 2.1+ 中我们需要调用 glEnable(GL_TEXTURE)在使用纹理之前?如果我们遇到纹理问题,可能是什么原因? 更新: 我正在使用 OpenGL 2.1 for Deskt
我不断收到此异常: Exception in thread "main" org.lwjgl.opengl.OpenGLException: Cannot use offsets when Array
我是一名优秀的程序员,十分优秀!