[英]Opengl GLSL render to texture
我正在嘗試使用OpenGL + GLSL着色器渲染紋理。 首先,我嘗試用白色填充30x30紋理的每個像素。 我正在傳遞從0到899的頂點着色器索引,代表紋理的每個像素。 這個對嗎? 頂點着色器:
flat in int index;
void main(void) {
gl_Position = vec4((index % 30) / 15 - 1, floor(index / 30) / 15 - 1, 0, 1);
}
片段着色器:
out vec4 color;
void main(void) {
color = vec4(1, 1, 1, 1);
}
您正在嘗試渲染900個頂點,每個像素一個頂點? 你為什么要這么做? 您正在使用什么原始類型。 僅當使用點時才有意義,但隨后需要對輸出坐標進行一些稍微的修改才能實際到達片段中心。
通常的方法是渲染僅填充整個幀緩沖區的一個四邊形(輕松表示為只有4個頂點的三角形帶)。 為此,您只需要將視口設置為完整的框架,並且渲染范圍是(-1,-1)到(1,1)的四倍。
請注意,在兩種方法中,都不需要頂點屬性。 您可以只使用gl_VertexID
(直接替代您方法中的index
,或作為四元組的4個頂點坐標的const數組的索引)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.