我发现openGL的一个单位在屏幕上差不多相当于400个像素(用默认设置,没作任何投影变换),用auxWireCube(0.1)显示的已经快半个屏幕了,用auxWireCube(1),则基本上比屏幕还大了。编程的时候基本上只能用零点几这些小数,很不习惯。能不能设置一下改变openGL的一个单位代表的像素数呢?

解决方案 »

  1.   

    这样不好,因为每台计算机的硬件配置都不一样,Opengl之所以这么做也是考虑到移植性。所以楼组还是死心吧~
      

  2.   

     GL.gluPerspective(45, (double)width / (double)height, 1.0, 15.0);??
      

  3.   

    OpenGL的单位长度与屏幕分辨率的对应关系是与多个因素有关的,包括你选择的投影参数,以及视区ViewPort的参数。首先,你没有做任何投影变换的时候,其实OpenGL是有一个默认的透视投影的,此时你的视点在(0,0,0)位置,视线方向是指向Z轴负方向,投影前平面到视点的距离是1个单位,透视的上下张角好像是45。当你改变这些参数的时候,投影到前平面上的单位长度其实是会变化的。接下来,前平面上的图像要映射到屏幕窗口中,这时的Viewport参数起了很大作用,需要有一个对应的比例关系来换算,就是一个矩形(前平面大小)到矩形(屏幕视窗大小)的变换,由此可以得到单位长度对应了多少像素,并进行相应的调整。
      

  4.   

    如果不算任何变换的话,1的长度为你创建的窗口长度的一半。比方说你创建了一个500*500的窗口显示,然后你用函数画一个立方体,函数参数为1,这时这个1就=250像素大小
    关于这一点,你可以用for函数指定N个点来测出单位1.0f正好是窗口的一半,此时3维坐标原点(0,0,0)正好处于窗口中心的位置
    LS几个扯到视图变换没有这个必要吧