我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:小鱼儿玄机2站资料 > 屏幕坐标 >

opengl中怎么把世界坐标系变成屏幕坐标系

归档日期:06-25       文本归类:屏幕坐标      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部你可以对这个3D坐标手动进行OpenGL的四个变换,得到的结果就是屏幕上的像素坐标。前三个变换(Model, View, Projection)都是4x4矩阵,操作对象是四维向量,所以需要把(100, 100, 100)补上w分量,变成(100, 100, 100, 1)。然后把前三个变换的矩阵依次左乘到这个向量上,得到的四维向量做齐次除法(所有分量都除以w分量),然后用其中x和y分量再进行第四个变换(Viewport),就得到屏幕坐标。

  OpenGL的变换矩阵是你自己设置的,通常都是程序在设置的同时自己也保存一份这些矩阵的值。如果设置的时候没有保存的话,可以用glGet查询。追问这位高手能再解释的详细点吗,最好举个例子,我刚开始学opengl,这里面的的矩阵变化搞不清楚追答比如如果你设置各个变换的代码是

  那么ModelView矩阵是一个平移(前三行代码)(OpenGL里model变换和view变换用同一个矩阵表示,可以理解为这两个矩阵已经乘在一起了):

  施加变换的过程如下:先把(100, 100, 100)变成四维向量(补上w分量,成为齐次坐标),变成(100, 100, 100, 1),然后把第一个矩阵左乘到这个向量上,得到(100, 100, 200, 1),然后再把第二个矩阵左城到这个新向量上,得到的仍是(100, 100, 200, 1),再把它转化回三维向量,方法是所有分量都除以w分量1,所以得到(100, 100, 200)。最后取xy分量(100, 100),进行最后一个变换(viewport),放大200倍后平移(+300, +300),变成(20300, 20300)。这就是屏幕上的坐标。当然这个位置肯定是在屏幕能显示的区域之外了。实际上进行viewport变换之前,因为xy分量是(100, 100)已经超出(-1, -1)到(1, 1)的范围,所以在这一步就已经可以确定这个像素不用画了,肯定在屏幕之外。

本文链接:http://noh1.net/pingmuzuobiao/246.html