我試圖與在頂點着色器的旋轉,這是我的着色器的代碼:OpenGL的旋轉與頂點不工作
"#version 150 core\n"
"in vec2 position;"
"in vec3 color;"
"out vec3 Color;"
"uniform mat4 rotation;"
"void main() {"
" Color = color;"
" gl_Position = rotation*vec4(position, 0.0, 2.0);"
"}";
我使用它在四元,這裏是生產代碼矩陣的計算方法,並在着色器爲之傾倒:
glm::quat rotation(x,0.0,0.0,0.5);
x+=0.001;
ctm = glm::mat4_cast(rotation);
GLint matrix_loc;
// get from shader pointer to global data
matrix_loc = glGetUniformLocation(shaderProgram, "rotation");
if (matrix_loc == -1)
std::cout << "pointer for rotation of shader not found" << matrix_loc << std::endl;
// put local data in shader :
glUniformMatrix4fv(matrix_loc, 1, GL_FALSE, glm::value_ptr(ctm));
但是,當它旋轉時,物體變得越來越大,我知道我不需要GetUniformLocation每次我在我的循環迭代的時間,但是這是一個代碼測試。據我所知,GlUniformMatrix應該使旋轉發生。在這些調用之後,我只需繪製我的頂點數組。
'旋轉四元體如何使它成爲'ctm'? – genpfault
呵呵,嘿,上帝,我想我只是忘了做鏈接,我是專注於我的代碼,我沒有注意到它,我明天會試試看,我會讓你知道。 – aze
它似乎在工作,但我的對象正在旋轉和變大,我已經將四元數變成(x,0,0,1),認爲它會圍繞一個斧頭旋轉,但它仍然變得越來越大,旋轉。對此有何想法? – aze