2013-04-16 66 views
3

我玩弄一些老的OpenGL代碼和我有一些這方面的問題......OpenGLES:如何找到紋理大小

glGetTexParameterfv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &glW); 
glGetTexParameterfv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &glH); 

現在我是新來的OpenGL,但我猜這抓起紋理的高度和寬度。問題是,OpenGLES沒有GL_TEXTURE_WIDTH或HEIGHT。現在我知道每個人都會給出的第一個答案是「你需要自己管理這個」,但是,這是一個相當大的代碼庫,需要一段時間才能確定。

我的問題是...

我怎樣才能得到OpenGLES紋理的寬度/高度?

回答

3

明顯的反應問題:你爲什麼需要這些信息?

拋開了一個明顯的問題,紋理尺寸不直接暴露。你可能要做的最好的事情是使用glTexSubImage檢查GL_INVALID_VALUE來搜索大小 - 我讀GLES man page的是,width = height = 0不是錯誤條件,所以你可以尋找最大的(x,y),而不實際上傳任何數據。

+0

我很欣賞你的反應,因爲我確定它是正確的,但對於所有這些(OpenGL甚至是C)來說,這可能需要一些時間。所以,因爲需要一些時間,所以我一直把它放在後臺,直到我得到港口的工作,然後我會重新審視。我會嘗試使用glTexSubImage,看看我能否做到我想要的,再次感謝! – Jackie

+0

唯一引發問題的是OpenGL有一個標準化的座標系,所以一旦上傳的紋理總是有0到1之間的座標。這並不是說你有時不想知道尺寸 - 例如如果您將高斯模糊或任何其他內核卷積編寫爲着色器,則最終需要知道紋理的像素大小。因此,問題更多的是試圖說明是否還有其他相關的建議可以作爲批評。它只是在閱讀它時才意識到它看起來有多苛刻。 – Tommy

+0

沒有概率,我聽說過更嚴厲,除了顯然你是非常知情的,所以我可以採取一些批評:-)。我實際上正在試圖將prboom +移植到Android上的OpenGLES,並且它在某處呈現gl渲染。我認爲這是一個精靈或基於圖像的東西,所以我認爲它需要信息來繪製正確的尺寸。我不得不將它轉換爲glReadBuffer,所以我假設我會在那裏使用相同的高度和寬度值,但也許我正在考慮錯誤。 – Jackie