为什么LWJGL有一个使用浮点数作为坐标的函数?

时间:2016-10-30 20:22:06

标签: java lwjgl

我在我的代码中修复了一个我知道与此有关的问题:GL11.glTexCoord2f(x,y);我当然改变了它,但我想知道为什么它使用浮点数作为坐标。我确定有一个原因,但这对我来说似乎非常愚蠢。可能有一些我不知道的东西:P但无论如何。

2 个答案:

答案 0 :(得分:0)

它还应该使用什么?尽管有一些支持,但所有GPU可能都不支持Double dataType。并且因为纹理uv坐标应该在0.0和1.0之间(作为高度/宽度的百分比),我不能想到可以在这里使用的任何其他逻辑数据类型。

使用花车有什么特别的问题吗?如果是这样,请编辑您的帖子并提供更多信息,因为现在我们无法为您提供任何帮助。

答案 1 :(得分:0)

这不是特定于Java或LWJGL。您可能知道,LWJGL主要是原始OpenGL API的1:1映射。从版本1.0开始,glTexCoord函数的不同风格一直在OpenGL中:https://www.opengl.org/sdk/docs/man2/xhtml/glTexCoord.xml

纹理坐标通常作为浮点值给出的原因是它们引用了一个" abstract"图像(纹理)。此纹理的 size 未知。例如,您可能有一个网格物体,并且作为其纹理,您可以使用大于200x200像素的JPG图像,或者使用800x800像素大的图像。

为了允许任意图像用作纹理,纹理坐标几乎总是以(0.0,0.0)和(1.0,1.0)之间的值给出。它们指的是图像的总大小,无论其大小如何。

想象一个具有纹理坐标(0.5,0.5)的顶点。如果纹理是200x200像素大,那么实际的"像素"将用作此顶点的是(100,100)处的像素。如果纹理大于800x800像素,那么将在此顶点处使用的像素将是(400,400)处的像素。

使用这种"标准化"坐标(在[0.0,1.0]范围内)在图形和其他应用程序中非常常见。