这可能是也可能不是一个非常愚蠢的问题,所以我道歉,但我还没有在任何书籍或教程中遇到过这个问题。我想它也适用于任何语言...
假设您创建了一个大小为640x480
的窗口和一个大小为32x32
的对象/形状的窗口,您可以使用键盘输入在窗口周围移动形状。
用于控制形状移动的Type
(int,float ...)是否重要?显然你不能画一个像素的中途,但是如果你将形状移动0.1f(例如使用glTranslation
函数)会发生什么事情,因为它应该被int of 1
移动......是吗?将渲染的形状移动1/10像素或?
我希望我已经解释得那么好,不要被人嘲笑。
我只是问这个,因为它会影响碰撞检测的准确性以及程序或潜在游戏的其他功能。
答案 0 :(得分:1)
glTranslate通过x y z生成翻译。当前矩阵(glMatrixMode)乘以此转换矩阵,产品替换当前矩阵,就好像glMultMatrix使用以下矩阵调用其参数:
1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1 如果矩阵模式是GL_MODELVIEW或GL_PROJECTION,则在调用glTranslate之后绘制的所有对象都将被翻译。
使用glPushMatrix和glPopMatrix保存和恢复未翻译的坐标系。
这意味着glTranslate将为您提供翻译,以与当前矩阵一起使用,从而产生非十进制数字。你不能使用半个像素。 glTranslate接收双精度或浮点数,所以如果你想在x,y或z中移动它1,只需给函数一个浮点1或双1作为参数。
答案 1 :(得分:1)
使用浮点数或双精度表示定位的最重要原因是背景计算。如果你一直用int来计算你的位置,你不仅需要使用转换步骤来重新计算。您还将每x步骤丢失数据
答案 2 :(得分:0)
如果你想让你的精灵动画为每次更新少于1个像素移动,那么你需要使用浮点,否则你将无法移动。您的绘图函数很可能会舍入到最接近的整数,因此它可能与此无关。但是你当然可以绘制到亚像素精度!