2012-06-13 49 views
2

剛剛學習了一些在android上學習製作遊戲的基礎知識的OpenGL。OpenGl ES - 如何將不同的紋理映射到一個網格物體

我遇到的麻煩是將不同紋理映射到我的網格上。

例如:

我有塊網格 - 8x8的 - 在我的頂點數組我定義一個9x9的頂點構建列/行定義的網格。然後我去做一個索引緩衝區,告訴它如何畫出構成網格中每個正方形的2個三角形。

我的挫折在於將紋理映射到網格的不同圖塊,因爲每個方塊都與網格中的其他方塊共享頂點,並且據我所知,只能在Opengl中的每個頂點應用一個紋理座標。

我能想到的唯一解決方案是在頂點緩衝區中生成重複的頂點,這將允許我爲每個頂點分配單獨的紋理座標(即使頂點已經位於前一個瓷磚生成的緩衝區中) 。 這種方式將結束我與一堆重複的頂點,這在我看來似乎不對。我也想避免動態創建一個大的位圖,然後用分數紋理座標將它映射到網格上。

有人可以請教我的新手,關於如何在網格上獲取不同的紋理每個瓷磚!

謝謝!

回答

0

我能想到的唯一的辦法是在生成頂點緩衝重複頂點,這將允許我來分配每個頂點

個人紋理座標,這就是你應該做的。它可能看起來很浪費,但opengl的「頂點」是定義頂點(包括texcoords,法線等)的所有屬性的集合。如果一個物理頂點位置由4個四元組共享,但該點的texcoord對於每個四元組都不相同,則必須創建4個唯一的頂點和索引來引用該點。

+0

謝謝你的澄清! 他們如何通過紋理化大地形網格來解決這個問題? – user1411499

+0

嗯,我敢打賭,這個問題的完整答案可以填充整個教科書,但請注意,重複只是位於紋理邊界上的頂點的問題。如果你有一個大的細分網格,那麼實際上在紋理之間共享的頂點的數量相對於頂點的總數是非常小的,所以重複並不像你繪製時那樣大四邊形(並且每個頂點必須重複4倍)。 @ user1411499 – Tim

+0

非常感謝 - 你幫了我很多好先生! – user1411499