簡體   English   中英

在具有獨立紋理坐標的GLSL中進行多重紋理處理的正確方法是什么?

[英]What's the proper way to do multitexturing in GLSL with independent texture coordinates?

多重紋理曾經很簡單明了。 綁定紋理,調用glBegin ,然后進行渲染,除了對每個紋理調用glMultiTexCoord而不是glTexCoord 然后所有這些都被棄用了。

我正在四處尋找解決問題的正確方法,但是我從Khronos Group官方來源和博客上找到的所有教程都假設您想對所有對象使用相同的紋理坐標集您的紋理,這是一個非常簡單的假設,不適用於我的用例。

假設我有紋理A和紋理B,並且我想使用rect rA中紋理A中的alpha值在rect rB渲染來自紋理B的顏色(其高度和寬度與rB相同,為了簡單起見,但不使用相同的Left和Top值),使用OpenGL 3,但不建議使用任何不推薦使用的功能。 正確的方法是什么?

在着色器中,您只需聲明(並使用)一組額外的紋理坐標和第二個采樣器。

vec4 sample1 = texture(texture1, texCoord1);
vec4 sample2 = texture(texture2, texCoord2);

指定模型時,將第二組texCoords添加到屬性中:

glVertexAttribPointer(tex1Loc, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(texCoord1, Vertex));
glVertexAttribPointer(tex2LOC, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(texCoord2, Vertex));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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