]> git.lizzy.rs Git - dragonblocks_alpha.git/commitdiff
Add per object wireframe mode
authorElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 11 Jul 2021 19:03:21 +0000 (21:03 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 11 Jul 2021 19:03:21 +0000 (21:03 +0200)
src/mesh.c
src/mesh.h

index 341789038291d933be249ce83b2ef8d1d2cbbc35..f2352174b95b523eb10c5863b682118adbf81055 100644 (file)
@@ -62,6 +62,7 @@ MeshObject *meshobject_create(VertexBuffer buffer, struct Scene *scene, v3f pos)
        obj->scale = (v3f) {1.0f, 1.0f, 1.0f};
        obj->angle = 0.0f;
        obj->visible = true;
+       obj->wireframe = false;
        meshobject_transform(obj);
 
        qsort(buffer.faces.ptr, buffer.faces.siz, sizeof(Face), &qsort_compare_faces);
@@ -155,6 +156,9 @@ void meshobject_render(MeshObject *obj, ShaderProgram *prog)
 
        glActiveTexture(GL_TEXTURE0);
 
+       if (obj->wireframe)
+               glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+
        for (size_t i = 0; i < obj->meshes_count; i++) {
                Mesh *mesh = obj->meshes[i];
 
@@ -169,4 +173,7 @@ void meshobject_render(MeshObject *obj, ShaderProgram *prog)
 
        glBindTexture(GL_TEXTURE_2D, 0);
        glBindVertexArray(0);
+
+       if (obj->wireframe)
+               glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 }
index a7b11affca4be83f3680c0fcfd36cdc8a5ef73d3..15a2011a6265cabed32939a2b8c9dce6d2e248af 100644 (file)
@@ -44,6 +44,7 @@ typedef struct
        bool remove;
        Mesh **meshes;
        size_t meshes_count;
+       bool wireframe;
 } MeshObject;
 
 struct Scene;