簡體   English   中英

批處理OpenGL精靈

[英]Batching OpenGL sprites

我一直在學習OpenGL,並且能夠使用三角帶創建成功的2D繪圖系統。 我編寫了一個粒子生成器來測試幾何的批處理,並且一切工作正常,我能夠在iPhone 5上以60 fps的速度渲染30k +頂點。我使用退化三角形連接粒子並立即繪制它們。 我要完成的是不使用退化三角形的批量渲染,因為那樣會使發送到GPU的數據量減少1/3,這將是巨大的。

我正在嘗試使用帶有三角形的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);

此代碼繪制第一個圖像沒有問題,但第二個圖像變形。 我一直在網上尋找,但一直無法弄清楚如何使其正常工作。

首先,您當前對兩個四邊形使用相同的索引,因此第二張圖像甚至根本不可見。

除了第二個四邊形的頂點數據混亂以外,您還獲得了兩次(150, 200)點,第一個可能應該是(150, 150)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM