我尝试渲染基本三角形,即设置视口,如下所示:
GL.Viewport(0, 0, (uint)Width, (uint)Height);
我正在使用顶点着色器:
precision highp float;
attribute highp vec2 a_pos;
attribute vec3 a_col;
varying vec3 v_col;
void main()
{
v_col=a_col;
gl_Position = vec4(a_pos,0,0);
}
和片段着色器:
varying highp vec3 v_col;
void main()
{
gl_FragColor = vec4(v_col,0);
}
但是当我尝试使用像
这样的简单坐标进行绘制时0,0,0
0,1,0
1,0,0
屏幕整个右上方都已填满。
我必须使用极端坐标范围才能在屏幕上显示三角形:
0,0,0
0,0.00000000000000000005f,0
0.00000000000000000005f,0,0
我不知道为什么。我使用C#所以浮动应该是32位像opengl es使用。 视口设置正确。
根据我的理解,我在规范化设备坐标系中指定坐标,在两个轴上从-1到1跨越。我不知道为什么这么紧张。
答案 0 :(得分:0)
好的,发现了。
当我将gl_Position中的最后一个坐标指定为0时,我犯了一个错误。 坐标除以最后一个值作为opengl内部裁剪过程的一部分,以帮助进行透视变换,将其更改为
gl_Position = vec4(a_pos,0.0,1.0);
一切都按预期运作。