0
所以,我渲染了一堆立方體;就像,屏幕上會立刻有成千上萬的立方體。問題是,計算每個立方體的每個幀的轉換矩陣,結果並不十分有效:1,000個立方體以54 fps呈現,10,000立方以6 fps呈現。我需要能夠改變這些轉換矩陣,因爲玩家將能夠遍歷它們。OpenGL:高效地計算變換矩陣
這裏是我的渲染代碼:
void Tester::render()
{
for (int i = 0; i < numInstances; i++)
transforms[i] = Commons::PERSPECTIVE_MATRIX * translations[i];
glBindBuffer(GL_ARRAY_BUFFER, m_transformationMatrixBuffer);
glBufferData(GL_ARRAY_BUFFER, numInstances * sizeof(glm::mat4), &transforms[0], GL_DYNAMIC_DRAW);
for (int i = 0; i < 4; i++)
{
glVertexAttribPointer(MVP_LOC + i, 4, GL_FLOAT, GL_FALSE, sizeof(glm::mat4), (const void*)(sizeof(float) * i * 4));
glEnableVertexAttribArray(MVP_LOC + i);
glVertexAttribDivisor(MVP_LOC + i, 1);
}
glDrawElementsInstanced(GL_TRIANGLES, m_numIndexDataElements, GL_UNSIGNED_SHORT, 0, numInstances);
}
基本上,我的問題是:我怎麼能有效地計算變換矩陣的每個多維數據集實例?
爲什麼你認爲你需要調整矩陣計算?你有沒有分析?如果你願意,你可能會感到驚訝。另一件事:你是否真的需要改變每一幀所有10k對象的變換?另外,使用VAO。 – Drop 2014-12-05 05:35:57
你能否通過調整矩陣計算來解釋你的意思?你可能沒有必要改變每幀10k的變換,但我需要改變至少1k的變換。我會實施VAO。 – hacksoi 2014-12-05 06:05:35
通過調整矩陣我的意思是你問的問題:「高效地計算變換矩陣」。在進行任何優化之前請[profile](http://en.wikipedia.org/wiki/Profiling_%28computer_programming%29)。 – Drop 2014-12-05 06:21:40