[英]Opengl ES strange coordinates
我试图渲染基本的三角形,即时设置视口,如下所示:
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#,因此浮点数应该像opengl es一样为32位。 视口设置正确。
根据我的理解,我正在规范化设备坐标系中指定坐标,该坐标系在两个轴上的范围都从-1到1。 我不知道为什么会这么牵强。
知道了
当我将gl_Position中的最后一个坐标指定为0时,我犯了一个错误。 在opengl内部裁剪过程中,将坐标除以最后一个值,以将其更改为
gl_Position = vec4(a_pos,0.0,1.0);
一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.