Opengl ES奇怪的坐标

时间:2015-06-23 15:43:30

标签: c# opengl-es

我尝试渲染基本三角形,即设置视口,如下所示:

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跨越。我不知道为什么这么紧张。

1 个答案:

答案 0 :(得分:0)

好的,发现了。

当我将gl_Position中的最后一个坐标指定为0时,我犯了一个错误。 坐标除以最后一个值作为opengl内部裁剪过程的一部分,以帮助进行透视变换,将其更改为

 gl_Position = vec4(a_pos,0.0,1.0);

一切都按预期运作。