簡體   English   中英

OpenGL GLSL渲染到紋理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM