无法通过几何着色器工作
我有一个带有点的 VBO,我可以使用顶点和片段着色器很好地渲染,但是当我添加通过几何着色器时,我什么也看不到。我使用 MRT 来发光,但在这个例子中我没有碰它。
从我在其他帖子中看到的情况来看,将值从一个阶段传递到另一个阶段可能存在问题,因此我删除了所有变量,但它仍然不起作用。
我在链接后设置了程序参数 - 希望没问题。
有什么想法为什么禁用几何着色器会产生白色粒子,但启用它却什么也没有显示?
VERTEX SHADER:
#version 120
attribute vec3 position;
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
void main()
{
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1);
}
FRAGMENT SHADER:
#version 120
void main()
{
gl_FragData[0] = vec4(1.f, 1.f, 1.f, 1.f);
gl_FragData[1] = vec4(0.f, 0.f, 0.f, 0.f);
}
GEOMETRY SHADER:
#version 120
#extension GL_EXT_geometry_shader4: enable
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
void main(void)
{
for (int i = 0; i < gl_VerticesIn; i++)
{
gl_Position = gl_PositionIn[i];
EmitVertex();
}
EndPrimitive();
}
设置参数(程序链接后,程序为resources.articleprogram)
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_INPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_VERTICES_OUT_EXT, 4);
I have a VBO with points in it, that I can render fine with a vertex and fragment shader, but when I add a pass through geometry shader, I see nothing. I'm using MRT for glow, but in this example I don't touch it.
From what I've seen on other posts, it looks like there may be issues with passing values from one stage to another, so I removed all my varyings but it still does not work.
I set up the program parameters after linking - hopefully that's alright.
Any ideas why disabling the geometry shader produces white particles, but enabling it shows nothing?
VERTEX SHADER:
#version 120
attribute vec3 position;
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
void main()
{
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1);
}
FRAGMENT SHADER:
#version 120
void main()
{
gl_FragData[0] = vec4(1.f, 1.f, 1.f, 1.f);
gl_FragData[1] = vec4(0.f, 0.f, 0.f, 0.f);
}
GEOMETRY SHADER:
#version 120
#extension GL_EXT_geometry_shader4: enable
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
void main(void)
{
for (int i = 0; i < gl_VerticesIn; i++)
{
gl_Position = gl_PositionIn[i];
EmitVertex();
}
EndPrimitive();
}
Setting up params (after program linking, program is resources.particleprogram)
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_INPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_VERTICES_OUT_EXT, 4);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这些参数必须在链接之前设置。
These parameters must be set before linking.