2016-10-30 32 views
0

我在我的代碼中修復了一個問題,我知道這個問題有關:GL11.glTexCoord2f(x,y);當然我改變了它,但我想知道爲什麼它使用浮點數作爲座標。我確信有一個原因,但對我來說,這似乎非常愚蠢。有可能是我失蹤的東西:P,但無論如何。爲什麼LWJGL有一個使用浮點數作爲座標的函數?

+0

它應該使用什麼呢? – tkausl

+0

你得到的錯誤是什麼,請提供多一點的代碼 –

+0

嗯,我的問題是爲什麼glTexCoord有一個版本使用浮點數... –

回答

0

這不是特定於Java或LWJGL。如您所知,LWJGL主要是原始OpenGL API的1:1映射。 glTexCoord函數的不同風格自1.0版以來一直在OpenGL中:https://www.opengl.org/sdk/docs/man2/xhtml/glTexCoord.xml

爲什麼紋理座標通常作爲浮點值給出的原因是它們指的是「抽象」圖像(紋理)。該紋理的大小未知。例如,您可能有一個網格,並且作爲其紋理,您可以使用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])在圖形和其他應用程序中非常常見。

+0

我知道了。 XD我假設他們是像glVertex使用的座標。 –

0

它還應該使用什麼?儘管有一些支持,但所有GPU都可能不支持Double dataType。由於紋理uv座標應該在0.0到1.0之間(作爲高度/寬度的百分比),所以我不能想到可以在此使用的任何其他邏輯數據類型。

那麼使用浮點數有什麼特別的問題嗎?如果是這樣,請編輯您的帖子並提供更多信息,因爲現在我們無法進一步幫助您。

+0

我錯誤地認爲它與glVertex基本相同,除了它是紋理。 –

相關問題