您的位置:首页 > 运维架构

纹理 和 顶点 在OpenGL 里面的值

2014-09-15 22:17 477 查看
以下是 纹理的大小
(落于 [0.0 - 1.0]区间内)
顶点的大小([-1..1][-1..1]
char character = text[i];float uv_x = (character%16)/16.0f;float uv_y = (character/16)/16.0f;

OpenGL3.0教程 第十一课:2D文本 摘录

分享0这样做是可行的(基本可行,详见下文),因为A的ASCII值为65。65%16 = 1,因此A位于第1列(列号从0开始)。65/16 = 4,因此A位于第4行(这是整数除法,所以结果不是想象中的4.0625)两者都除以16.0以使之落于[0.0 - 1.0]区间内,这正是OpenGL纹理所需的------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void main(){// Output position of the vertex, in clip space// map [0..800][0..600] to [-1..1][-1..1]vec2 vertexPosition_homoneneousspace = vertexPosition_screenspace - vec2(400,300); // [0..800][0..600] -> [-400..400][-300..300]vertexPosition_homoneneousspace /= vec2(400,300);gl_Position =  vec4(vertexPosition_homoneneousspace,0,1);// UV of the vertex. No special space for this one.UV = vertexUV;}
注意非常重要的一点:这些坐标位于[0,800][0,600]范围内。也就是说,这里不需要矩阵。vertexshader只需简单换算就可以把这些坐标转换到[-1,1][-1,1]范围内(也可以在C++代码中完成这一步)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: