2011-10-09 189 views
8

enter image description here如何繪製「發光」線在OpenGL ES

能否請你分享如何拉伸變形線的一些代碼(任何語言)(這將是光滑或有灼熱般的效果,藍線,四點)由許多點組成,如使用OpenGL ES 1.0附加圖像。

我試圖用紋理紋理16×16或1×16像素的GL_LINE_STRIP,但沒有成功。

+1

紋理的大小不會奇蹟般地增加線條的大小。你弄錯紋理紋理的工作原理。 –

+0

好吧,我怎樣才能達到這種效果,有2d點的數組和紋理(或者用OpenGL ES繪製這樣的線所需的任何東西) – michael

+1

可以使用的一種方法是使用像素着色器。照常畫線,然後使用3次框模糊。 – Rekin

回答

5

在ES 1.0,您可以使用渲染到紋理創造性地達到你想要的效果,但它很可能是昂貴的填充率方面。 Gamasutra擁有an (old) article關於Tron 2.0遊戲如何獲得輝煌 - 您需要特別注意DirectX 7.0註釋,因爲那是像ES 1.0這樣的固定管道。在你可能只想顯示高斯圖像,而不是由於電熱與原來的混合,你的情況是所有你感興趣的

我的文章的摘要:

  • 渲染的所有行以正常的,細的發線紋理。將此紋理稱爲源紋理。
  • 通過採用剛剛渲染的源紋理並將其繪製(例如,五次)到另一個紋理(我稱其爲水平模糊紋理)來應用線性水平模糊。在不透明度爲1.0的x = 0的偏移處繪製一個副本,再繪製兩個副本 - 一個在x = +1和一個在x = -1 - 不透明度爲0.63,最後兩個副本 - 一個在x = +2和一個在x = -2時,不透明度爲0.17。使用添加劑混合。
  • 通過獲取水平模糊紋理並執行基本相同的步驟,但使用y偏移而不是x偏移,對其應用線性垂直模糊。

那些不透明度數是從this page上的2d高斯內核導出的。與他們一起玩,以影響你的線條外側的脫落。

注意這裏所涉及的額外費用:你表面上添十座全屏紋理繪製加上一些幀緩衝區交換。使用多紋理技術可以減少抽獎次數。着色器方法可能會一次完成水平和垂直步驟。