我假設這將是「未定義」的那些東西之一,但我似乎無法從Google中找到具體的答案。使用佈局限定符時,未緩衝頂點屬性的OpenGL默認值
讓我們在我的頂點着色器說我有:
layout(location = 0) in vec3 vPosition;
layout(location = 1) in vec3 vNormal;
layout(location = 2) in vec4 vColour;
但並沒有什麼緩衝,以地點2 glEnableVertexAttribArray()或glVertexAttribPointer()。我能期望價值是什麼特別的嗎?
我假設一個vec4它將沿{0,0,0,0},{0,0,0,1}或{1,1,1,1}行,但在我的情況是{0,0,1,1}。
當我先前使用glBindAttribLocation()來指定的位置,它默認爲{1,1,1,1},用3個不同的操作系統4臺不同的機器(Ubuntu的12.04,窗口7,和Ubuntu 10.04)。
跨機器假設值爲{0,0,1,1}是否安全?或者這只是一個巧合?
所以我已經爲特定的位置編號設置了glDisableVertexAttribArray(),但它仍然在着色器中被讀爲{0,0,1,1}。我正在使用VAO,所以我只撥打一次電話。我應該在我的glDrawElements()調用之前禁用它們嗎? – kbirk
@Pondwater:如果VAO禁用它,則禁用它。您不必再次禁用它。另外,我做了一個補充答案。 –
啊,這是有道理的!謝謝你的澄清! – kbirk