c++ - 使用几何着色器创建新的图元类型

标签 c++ opengl geometry glsl shader

除了输入之外,是否可以从几何着色器输出新的图元类型?我想输入一个点并渲染一个三角形。该点将用作此三角形的中心。如果没有,是否有其他选项可以仅输入点并渲染由该点定义的其他一些几何体?

在 answer 的帮助下,几何着色器正在做我要求的事情(如果有人需要的话):

#version 120
#extension GL_EXT_geometry_shader4 : enable

layout(points) in;
layout(triangle_strip) out;

void main()
{   
    gl_Position = gl_in[0].gl_Position;
    EmitVertex();
    gl_Position = gl_in[0].gl_Position+vec4(1,0,0,0);
    EmitVertex();
    gl_Position = gl_in[0].gl_Position+vec4(0, 1, 0, 0);
    EmitVertex();
    EndPrimitive();
}

最佳答案

是的,这是完全可能的,这就是几何着色器的用途。只需在应用程序中使用 glProgramParameteri 或使用更现代的 layout 语法直接在着色器中。

关于c++ - 使用几何着色器创建新的图元类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518611/

相关文章:

c++ - 关于使用 glBufferSubData 频繁更新实例化数组的困惑

c# - 确定平面上的孔

c++ - OpenCV : How to find the center of mass/centroid for motion information

c++ - 类型字段是纯粹的邪恶吗?

C++ 64 位整数 : pass by reference or pass by value

javascript - 从数组中消除项目以达到固定长度 - JavaScript

绘制具有/不同重叠边框的矩形边框的算法

c++ - _stricmp with mingw 和 c++0x 不存在?

cocoa - 正确关闭 CVDisplayLink

c++ - glEnable(GL_TEXTURE_GEN_S) GL_INVALID_OPERATION