glPolygoneMode(GL_FRONT_AND_BACK, GL_FILL)是ON,如何在这种情况下获得线框?有没有办法在没有开关多边形模式的情况下获得线框渲染GL_LINE?
cor*_*iKa 18
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
Run Code Online (Sandbox Code Playgroud)
填充它...你想要线条.
编辑:记住,完成后你可以随时把它重新填充,就像这样
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
// add polygons here
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
Run Code Online (Sandbox Code Playgroud)
从你的问题来看,我假设你有一些巨大的中间件,并且只能访问着色器,对吗?
在这种情况下,在顶点着色器中创建一个名为 vertexID 的变量:
varying float vertexID; # in GLSL <= 3, or
out float vertexID; # in GLSL 4
Run Code Online (Sandbox Code Playgroud)
并为其分配内置的 gl_VertexID :
vertexID = (float)gl_VertexID;
Run Code Online (Sandbox Code Playgroud)
这样,您就可以从片段着色器访问 gl_VertexID,但是是插值的!这很好,因为例如,一个顶点有 2 个,相邻顶点有 3 个,中间有 2.5 个。
因此,您只需检查 vertexID 是否接近 2(或 3):如果是,则您接近边缘。这对于可视化和调试来说应该足够了。
in float vertexID; # or
varying float vertexID;
// blabla
if (fract(vertexID) < 0.1){
outcolor = vec4(1,0,0,0); # in glsl 4
}
Run Code Online (Sandbox Code Playgroud)
请注意,这样您只能得到每个三角形的 2 条边。也许有些会非常薄(如果一个顶点 ID 是 2,另一个顶点 ID 是 1000,则 0.1 区域很小)。
| 归档时间: |
|
| 查看次数: |
22591 次 |
| 最近记录: |