背景
我正在python/pyglet中創建一個程序生成的地形。 我用pyglet通過爲屏幕上的每個x和y座標運行一個lambda函數,然後以我想要的顏色繪製該像素來對其進行可視化。程序GL紋理
這不是非常優化的。
我有一個偷偷摸摸的懷疑,有一種方法來創建一個矩形對象,並告訴GL引擎渲染一個紋理,給GL引擎一個lambda函數,將返回顏色換取x和y座標。
僞pyglet例如
def get_color(pos):
x, y = pos
color = x * y % 255
return [color, color, color]
width = 1680
height = 1024
win = window.Window(fullscreen=False, vsync=True, width=width, height=height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, win.width, 0, win.height)
glTextureMapper(get_color)
win.clear()
points = [0, 0, width, 0, width, height, 0, height]
pyglet.graphics.draw(int(len(points)/2), GL_QUADS, ('v2f', points))
TLDR問題
如何使用lambda函數顏色的多邊形?這是着色器嗎?
Pyglet例子是首選,但在任何語言例子,歡迎
OpenGL不使用多邊形,只使用三角形(以及直線和點)。像素的顏色在定義圖元(三角形,直線或點)的頂點之間進行插值。如果你想爲每個像素使用一個函數,那麼最好使用着色器。如果您已經爲每個像素計算了顏色,則紋理可能很有用。我最好的建議是遵循一些教程或一本關於現代OpenGL(ver> = 3.x)的書 – Ripi2