我在理解OpenGL中燈光如何工作時遇到了一些問題(尤其是理解預定義的變量,是否存在某個地方的列表?)。我一直在我的頂點着色器文件中弄亂我的shpere。所以我設法遮蔽了它,但我不知道我做了什麼。下面是代碼:問題了解OpenGL中的燈光
頂點着色器:
#version 330
precision highp float;
in vec3 in_Position; //declare position
in vec3 in_Color; //color passed from the cpp file
//mycode
in vec3 in_Normal;
// mvpmatrix is the result of multiplying the model, view, and projection matrices */
uniform mat4 MVP_matrix;
vec3 ambient;
out vec3 ex_Color;
void main(void) {
// Multiply the MVP_ matrix by the vertex to obtain our final vertex position (mvp was created in *.cpp)
gl_Position = MVP_matrix * vec4(in_Position, 1.0);
//mycode
ambient = vec3(0.0f,0.1f,1.0f); // just a test vector
ambient = ambient * in_Position ; // HERE IS WHAT I DONT GET!
ex_Color = ambient;
}
我乘以在球面上的每個點與MVP矩陣,然後與周圍變量。
片段着色器:
#version 330
precision highp float;
in vec3 ex_Color;
out vec4 gl_FragColor;
void main(void) {
gl_FragColor = vec4(ex_Color,1.0);
}
什麼是 「精密highp浮動;」呢?我知道頂點文件將顏色傳遞給片段着色器,然後該片段被「插入」。好的插值是如何工作的? Opengl如何知道在哪裏停止插值?
「是否有他們的列表」是的。 [OpenGL規範。](http://www.opengl.org/registry/)真的,你需要不再問這些問題零碎,只是去[查看一個很好的教程](http://www.opengl。組織/維基/ Getting_started#Tutorials_and_How_To_Guides)。這類問題對任何人都沒有好處。你基本上在問:「OpenGL的整個部分是如何工作的?」 –
@NicolBolas我知道這些教程,我只是沒有時間,而且大部分都使用自定義庫。所以我問這個問題。 –
@TrtTrt:你不想花時間去正確學習,所以你要求我們爲你寫基本的教程。我不確定我是否理解你的邏輯。使用「自定義庫」有什麼問題?或者你相信你通過重新發明輪子獲得了一些東西?學習像圖形編程這樣複雜的事情需要能夠切實解決實際問題。這意味着使用圖書館來處理不重要的事情。 –