2013-04-20 110 views
0

OS:Win7的VS 2012OpenGL着色基本計算

顯卡:國米HD 4000

我沒有問題,沒有任何計算生成圖像。 但是,當我爲預期投影添加p * vPosition時, 在我執行程序後立即打開和關閉了我的窗口。 任何人都可以指出我做錯了什麼? 我vshsader.glsl代碼如下所示:

#version 150 

in vec4 vPosition; 
in vec4 vColor; 
out vec4 color; 

void main() 
{ 
    float d = -10.0; 
    mat4 p = mat4(1.0, 0.0, 0.0, 0.0 
        0.0, 0.0, 1.0, 0.0 
        0.0, 0.0, 1.0, 0.0 
        0.0, 0.0, 1/d, 0.0); 

    gl_Position = p*vPosition; 
    color = vColor; 
} 
+0

到底什麼是 「國米HD 4000」? – genpfault 2013-04-20 18:34:19

+0

我的不好。這是英特爾。 – 2013-04-20 20:28:35

+0

是否有任何錯誤打印到控制檯?你的片段程序不太可能導致窗口在執行後立即關閉。 (如果你沒有分配足夠的內存來保存着色器程序的字符串並覆蓋其他內存或其他東西,那麼可能會發生這種情況,但是你所描述的內容並不合理。)你能否更詳細地解釋並可能包含一些應用程序代碼? – user1118321 2013-04-21 00:29:41

回答

3

你缺少逗號在參數的每一行MAT4構造的結束。

它應該是:

mat4 p = mat4(1.0, 0.0, 0.0, 0.0, // <- end with comma 
       0.0, 0.0, 1.0, 0.0, // <- end with comma 
       0.0, 0.0, 1.0, 0.0, // <- end with comma 
       0.0, 0.0, 1/d, 0.0); 
+0

謝謝!它正在工作。如何,我的結果並沒有顯示我想要的正確圖片。 :(我只看到白色畫面。 – 2013-04-21 07:08:50

+0

@PeterHwang要讀出部分上[當前頁](http://openglbook.com/the-book/chapter-4-entering-the-third-dimension/)標題投影矩陣和創建你的投影矩陣 – bwroga 2013-04-21 16:23:44

+0

這是我真正想看到的,非常感謝。 – 2013-04-21 21:23:31