我可以在openGL中成功處理屏幕上的3d對象。OpenGL屏幕座標
要添加2D效果,我想我可以簡單地關閉頂點着色器中的矩陣乘法(或給出單位矩陣),然後我提供的「頂點」就是屏幕座標。
但2個簡單的三角形拒絕顯示(方0,0,100,100,嘗試了各種深度,但是相同的代碼工作正常,如果我給它一個旋轉矩陣。
任何想法?
static const char gVertexShader[] =
"attribute vec3 coord3d;\n"
"uniform mat4 mvp;\n"
"void main() {\n"
"gl_Position = mvp*vec4(coord3d,1.0);\n"
"}\n";
- >
static const char gVertexShader[] =
"attribute vec3 coord3d;\n"
"uniform mat4 mvp;\n"
"void main() {\n"
"gl_Position = vec4(coord3d,1.0);\n"
"}\n";
編輯:我無法得到任何使用單位矩陣作爲轉換來展示,但我可以這樣做,用這個一個:
glm::mat4 view = glm::lookAt(glm::vec3(0.0, 0.0, -5), glm::vec3(0.0, 0.0, 0.0), glm::vec3(0.0, 1.0, 0.0));
glm::mat4 pers = glm::perspective(.78f, 1.0f*screenWidth/screenHeight, 0.1f, 10.0f);
xform = pers * view * glm::mat4(1.0f);
你不得不調整-5完全填滿屏幕...
如果你想用二維繪製東西,那麼在透視投影中使用正交投影是非常有用的。 – user3256930