繁体   English   中英

OpenGL ES奇怪的坐标

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM