- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有直通顶点和片段着色器。
顶点着色器
void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
片段着色器
void main(void)
{
gl_FragColor = gl_Color;
}
它们会产生空渲染(黑色而不是像 glClearBuffer 那样的背景色)。
如果我修改顶点着色器以将 gl_FrontColor 设置为 gl_Color,它会渲染未触及的 OpenGL 缓冲区...这是直通着色器的预期行为。
void main(void)
{
gl_FrontColor = gl_Color; //Added line
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
我很困惑,如何设置顶点着色器中的 gl_FrontColor 可以更改片段一中的 gl_Color 的值?我缺少什么?
最佳答案
gl_Color
在不同的地方有不同的含义。
在顶点着色器中,gl_Color
表示用户传递的主要每顶点颜色属性。这是使用 glColor*
调用或由 glColorPointer
获取的数组数据来设置的。
在片段着色器中,gl_Color
表示正在渲染的三角形面的插值颜色。请记住,三角形有正面和背面。如果启用面剔除,则不会渲染一种或另一种(或两者)的所有面。但是,如果关闭面剔除,则两侧都会被渲染。
根据三角形的特定面具有不同的每个顶点输出值通常很有用。原色具有正面颜色和背面颜色,代表正面三角形和背面三角形的颜色。这些的顶点着色器输出是 gl_FrontColor
和 gl_BackColor
。
如果您正在进行双面渲染,则需要设置这两个值,以便片段着色器的 gl_Color
输入具有任何含义。如果你只做正面渲染,那么你只需要设置gl_FrontColor
即可。
关于opengl - 顶点着色器和片段着色器中的 gl_Color 和 gl_FrontColor 之间的关系是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430154/
顶点着色器应该输出裁剪空间中的顶点位置: Vertex shaders, as the name implies, operate on vertices. Specifically, each in
我在看 http://www.swiftless.com/tutorials/glsl/3_glcolor.html它具有以下代码片段: void main() { // Set the output
我有直通顶点和片段着色器。 顶点着色器 void main(void) { gl_TexCoord[0] = gl_MultiTexCoord0; gl_Position = gl_M
我正在尝试使用着色器在 lwjgl 中渲染纹理。一旦我在顶点着色器中使用 gl_Color,我就没有输出。 这正在工作: #version 120 attribute vec2 position; a
我是一名优秀的程序员,十分优秀!