我試圖在使用着色器的球體上繪製大量的圓。基本alogrith是這樣的:球體上的繪製圓圈
- 從所述片段計算的距離(使用它的紋理座標),以圓的中心的位置(圓的中心也是在紋理座標指定)
- 從計算角度朝向圓心的尖銳。基於角度,訪問紋理(其中具有360個像素並且紅色通道指定半徑距離),並且如果從片段到圓心的距離較小,則檢索給定角度的半徑
- 比檢索的半徑大,則片段的顏色是紅色的,否則是藍色的。
我想畫...說60藍色球體上的紅色圓圈。我有着色器工作了一個循環,但如何做60?這是我到目前爲止已經試過....
我在數據紋理指定給定角半徑過去了,但我發現文物在蠕動,我相信這是由於線性插值時我嘗試使用檢索來自數據紋理信息:
float returnV = texture2D(angles, vec2(x, y)).r;
其中角是數據的紋理(Sampler2D),其包含對於給定的角度的半徑,並且x =角/ 360.0(角度爲0至360)和y = 0至60(y是圓圈編號)
我試過p分配統一的浮動半徑[360],但我無法通過動態索引訪問半徑。我甚至試過這個爛攤子......
getArrayValue(int index) { if (index == 0) { return radii[0]; } else if (index == 1) { return radii[1]; }
等等...
如果我創建一個紋理,並把各界對紋理,然後多紋理藍色球與包含它的圓圈的工作,但正如你所期望的,我有非常糟糕的別名。我喜歡根據片段的位置和圈的順序生成圓的想法,因爲實際上沒有混疊。但是,我是否比一個人做礦石?
Thx !!!
〜博爾特
謝謝!我認爲它很可能必須在頂點程序中做一些工作。 Thx爲靈感! – Boltimuss 2009-07-15 12:34:55
我已在此答案中添加了評論。 (由於格式和大小的限制,它在下面顯示爲答案)。 – RJFalconer 2009-12-31 15:31:48