2013-03-20 61 views
1

我一直在學習OpenGL和已經能夠創建一個使用三角形帶一個成功的2D繪圖系統。我寫了一個粒子生成器來測試批處理幾何圖形和一切正常,我能夠在iPhone 5上以60 fps渲染30k +頂點。我使用退化三角形連接粒子並一次繪製它們。我試圖完成的是批處理渲染而不使用退化三角形,因爲這會減少發送到GPU的數據量三分之一的巨大數量。配料OpenGL的精靈

我試圖使用glDrawElements用三角形來繪製2個精靈用下面的代碼

//the vertices for the square (2d) 
GLfloat square[] = { 
    50, 50, //bottom left 
    100, 50, //bottom right 
    50, 100, //top left 
    100, 100, //top right 

    150, 200, //bottom left 
    200, 150, //bottom right 
    150, 200, //top left 
    200, 200 //top right 
}; 

//texture coords 
GLfloat tex[] = { 
    0,0, 
    1,0, 
    0,1, 
    1,1, 

    0,0, 
    1,0, 
    0,1, 
    1,1 
}; 

GLubyte indices[] = 
{ 
    0,2,3, 
    0,3,1, 

    0,2,3, 
    0,3,1 
}; 

//actual drawing code 
glBindBuffer(GL_ARRAY_BUFFER, 0); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); 
glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, GL_FALSE, 0, square); 
glVertexAttribPointer(ATTRIB_TEX, 2, GL_FLOAT, GL_FALSE, 0, tex); 

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, image); 

glDrawElements(GL_TRIANGLES, 12, GL_UNSIGNED_BYTE, indices); 

該代碼繪製第一個圖像沒有問題,但第二圖像失真。我一直在網上查找,但一直無法弄清楚如何使這項工作正確。

回答

0

首先,您正在使用相同指數兩個四邊形,所以第二圖像甚至不應該可見。

除了第二個四元組的頂點數據是混亂的,你有兩次點(150, 200),第一個應該是(150, 150)

+0

好吧,我修正了平方座標(lol),並將第二組索引改爲4,6,7,4,7,5,並且顯示正確。現在我的問題是如果我必須不斷增加索引的值,我將如何顯示大量的元素? – 2013-03-21 01:34:52