簡體   English   中英

如何從頂點着色器中的vec3獲取值? OpenGL 3.3

[英]How to get a value from vec3 in vertex shader? OpenGL 3.3

我有以下頂點着色器:

#version 330                                                                      
layout (location = 0) in vec3 Position;                                           
uniform mat4 gWVP;                                                                
out vec4 Color;
void main()                                                                       
{                                                                                 
    gl_Position = gWVP * vec4(Position, 1.0);                     
};

例如,如何獲得vec3的第三個值? 我的第一個想法是:“也許我可以通過將這個向量(位置)乘以某個東西得到它?” 但我不確定是否存在類似“垂直矢量類型”的東西。 那么,最好的方法是什么? 我需要這個值來設置像素的顏色。

至少有4個選項:

  1. 您可以使用組件名稱xyzw訪問矢量組件。 這主要用於表示點/向量的向量。 在您的示例中,這將是Position.z
  2. 您可以使用組件名稱rgba 這主要用於表示顏色的矢量。 在您的示例中,您可以使用Position.b ,即使這不是非常易讀。 另一方面, Color.b對於另一個變量來說是個不錯的選擇。
  3. 您可以使用組件名稱stpq 這主要用於表示紋理坐標的矢量。 在我們的示例中, Position.p還會為您提供第3個組件。
  4. 您可以使用帶有0的索引的下標表示法。 在你的例子中, Position[2]也給出了第3個元素。

每個向量都有對元素的重載訪問。 在這種情況下,使用Position.z應該工作。

暫無
暫無

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

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