mirror of
https://git.allpurposem.at/mat/WiggleWobble.git
synced 2025-12-23 21:11:29 +01:00
feat: switch to rendering grid with EBO
This commit is contained in:
parent
dbb4488c75
commit
af189dc9b0
74
src/main.cpp
74
src/main.cpp
@ -30,8 +30,8 @@ SShader* g_shader {};
|
|||||||
constexpr unsigned int g_SUBDIVS = 2;
|
constexpr unsigned int g_SUBDIVS = 2;
|
||||||
static_assert(g_SUBDIVS > 0);
|
static_assert(g_SUBDIVS > 0);
|
||||||
|
|
||||||
GLuint g_VAO, g_VBO, g_VBO_UVs;
|
GLuint g_VAO, g_VBO, g_VBO_UVs, g_EBO;
|
||||||
unsigned int g_vertCount = 0;
|
unsigned int g_indexCount = 0;
|
||||||
|
|
||||||
class CBindOwnFramebufferPassElement final: public IPassElement {
|
class CBindOwnFramebufferPassElement final: public IPassElement {
|
||||||
public:
|
public:
|
||||||
@ -125,20 +125,8 @@ class CRenderWobblyWindowPassElement final: public IPassElement {
|
|||||||
glBindBuffer(GL_ARRAY_BUFFER, g_VBO_UVs);
|
glBindBuffer(GL_ARRAY_BUFFER, g_VBO_UVs);
|
||||||
glBufferSubData(GL_ARRAY_BUFFER, 0, UVs.size(), UVs.data());
|
glBufferSubData(GL_ARRAY_BUFFER, 0, UVs.size(), UVs.data());
|
||||||
|
|
||||||
GLCALL(glDisable(GL_CULL_FACE));
|
GLCALL(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_EBO));
|
||||||
GLCALL(glDrawArrays(GL_TRIANGLES, 0, g_vertCount));
|
GLCALL(glDrawElements(GL_TRIANGLE_STRIP, g_indexCount, GL_UNSIGNED_INT, 0));
|
||||||
|
|
||||||
int nBufferSize = 0;
|
|
||||||
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &nBufferSize);
|
|
||||||
int originalVertexArraySize = (nBufferSize / sizeof(float));
|
|
||||||
std::println(
|
|
||||||
"Drew {} verts, from VBO that has {} floats",
|
|
||||||
g_vertCount,
|
|
||||||
originalVertexArraySize
|
|
||||||
);
|
|
||||||
|
|
||||||
// GLCALL(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_EBO));
|
|
||||||
// GLCALL(glDrawElements(GL_TRIANGLE_STRIP, g_indicesCount, GL_UNSIGNED_INT, 0));
|
|
||||||
|
|
||||||
GLCALL(glBindVertexArray(0));
|
GLCALL(glBindVertexArray(0));
|
||||||
pWindowFB->getTexture()->unbind();
|
pWindowFB->getTexture()->unbind();
|
||||||
@ -252,8 +240,7 @@ void hkRenderWindow(
|
|||||||
void initGPUObjects() {
|
void initGPUObjects() {
|
||||||
g_shader = &g_pHyprOpenGL->m_shaders->m_shRGBA;
|
g_shader = &g_pHyprOpenGL->m_shaders->m_shRGBA;
|
||||||
|
|
||||||
std::vector<float> finalVerts;
|
// std::vector<float> finalVerts;
|
||||||
{
|
|
||||||
const unsigned int vertsPerRow = g_SUBDIVS + 1;
|
const unsigned int vertsPerRow = g_SUBDIVS + 1;
|
||||||
std::vector<float> verts;
|
std::vector<float> verts;
|
||||||
verts.reserve(vertsPerRow * vertsPerRow * 2);
|
verts.reserve(vertsPerRow * vertsPerRow * 2);
|
||||||
@ -266,15 +253,9 @@ void initGPUObjects() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
verts[4 * 2] = 0.7f;
|
std::vector<GLuint> indices;
|
||||||
|
g_indexCount = 3 * 2 * g_SUBDIVS * g_SUBDIVS;
|
||||||
for (unsigned int i = 0; i < verts.size(); i += 2) {
|
indices.reserve(g_indexCount);
|
||||||
std::println("Created vert ({}, {})", verts[i], verts[i + 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<unsigned int> indices;
|
|
||||||
g_vertCount = 3 * 2 * g_SUBDIVS * g_SUBDIVS;
|
|
||||||
indices.reserve(g_vertCount);
|
|
||||||
|
|
||||||
for (int y = 0; y < g_SUBDIVS; ++y) {
|
for (int y = 0; y < g_SUBDIVS; ++y) {
|
||||||
for (int x = 0; x < g_SUBDIVS; ++x) {
|
for (int x = 0; x < g_SUBDIVS; ++x) {
|
||||||
@ -288,42 +269,27 @@ void initGPUObjects() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
finalVerts.reserve(g_vertCount);
|
|
||||||
for (auto&& index : indices) {
|
|
||||||
finalVerts.push_back(verts[index * 2]);
|
|
||||||
finalVerts.push_back(verts[index * 2 + 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < finalVerts.size(); i += 6) {
|
|
||||||
std::println(
|
|
||||||
"Created tri <({}, {}), ({}, {}), ({}, {})>",
|
|
||||||
finalVerts[i],
|
|
||||||
finalVerts[i + 1],
|
|
||||||
finalVerts[i + 2],
|
|
||||||
finalVerts[i + 3],
|
|
||||||
finalVerts[i + 4],
|
|
||||||
finalVerts[i + 5]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
GLCALL(glGenVertexArrays(1, &g_VAO));
|
GLCALL(glGenVertexArrays(1, &g_VAO));
|
||||||
GLCALL(glGenBuffers(1, &g_VBO));
|
GLCALL(glGenBuffers(1, &g_VBO));
|
||||||
GLCALL(glGenBuffers(1, &g_VBO_UVs));
|
GLCALL(glGenBuffers(1, &g_VBO_UVs));
|
||||||
// GLCALL(glGenBuffers(1, &g_EBO));
|
GLCALL(glGenBuffers(1, &g_EBO));
|
||||||
|
|
||||||
GLCALL(glBindVertexArray(g_VAO));
|
GLCALL(glBindVertexArray(g_VAO));
|
||||||
|
|
||||||
// GLCALL(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_EBO));
|
GLCALL(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_EBO));
|
||||||
// GLCALL(glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size(), indices.data(), GL_STATIC_DRAW));
|
GLCALL(glBufferData(
|
||||||
|
GL_ELEMENT_ARRAY_BUFFER,
|
||||||
|
indices.size() * sizeof(GLuint),
|
||||||
|
indices.data(),
|
||||||
|
GL_STATIC_DRAW
|
||||||
|
));
|
||||||
|
|
||||||
GLCALL(glBindBuffer(GL_ARRAY_BUFFER, g_VBO));
|
GLCALL(glBindBuffer(GL_ARRAY_BUFFER, g_VBO));
|
||||||
{
|
{
|
||||||
std::println("Number of vertices in VBO: {}/2", finalVerts.size());
|
|
||||||
GLCALL(glBufferData(
|
GLCALL(glBufferData(
|
||||||
GL_ARRAY_BUFFER,
|
GL_ARRAY_BUFFER,
|
||||||
finalVerts.size() * sizeof(float),
|
verts.size() * sizeof(float),
|
||||||
finalVerts.data(),
|
verts.data(),
|
||||||
GL_DYNAMIC_DRAW
|
GL_DYNAMIC_DRAW
|
||||||
));
|
));
|
||||||
|
|
||||||
@ -342,8 +308,8 @@ void initGPUObjects() {
|
|||||||
{
|
{
|
||||||
GLCALL(glBufferData(
|
GLCALL(glBufferData(
|
||||||
GL_ARRAY_BUFFER,
|
GL_ARRAY_BUFFER,
|
||||||
finalVerts.size() * sizeof(float),
|
verts.size() * sizeof(float),
|
||||||
finalVerts.data(),
|
verts.data(),
|
||||||
GL_DYNAMIC_DRAW
|
GL_DYNAMIC_DRAW
|
||||||
)); // Initial dummy UVs
|
)); // Initial dummy UVs
|
||||||
GLCALL(glEnableVertexAttribArray(g_shader->uniformLocations[SHADER_TEX_ATTRIB]));
|
GLCALL(glEnableVertexAttribArray(g_shader->uniformLocations[SHADER_TEX_ATTRIB]));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user