OpenGL SDL2 imgui-master examples with custom loader using index vbo doesnt work #483

Closed
opened 2016-01-14 11:02:45 +00:00 by edselmalasig · 3 comments
edselmalasig commented 2016-01-14 11:02:45 +00:00 (Migrated from github.com)

OpenGL SDL2 imgui-master examples with custom loader using vbo indexing doesnt show any geometries.

// ImGui - standalone example application for SDL2 + OpenGL
// If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp.

//cl compile: 
// cl /Zi /MD /I ..\.. /I ..\libs\gl3w /I H:\Project\OpenGL\ogl-master\ /I H:\Project\OpenGL\ogl-master\external\glew-1.13.0\include\  /I H:\Project\OpenGL\ogl-master\external\glfw-3.1.2\include\GLFW\ /I H:\Project\OpenGL\ogl-master\external\glm-0.9.7.1\ /I %SDL2DIR%\include main.cpp imgui_impl_sdl_gl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c H:\Project\OpenGL\ogl-master\common\shader.cpp H:\Project\OpenGL\ogl-master\common\objloader.cpp H:\Project\OpenGL\ogl-master\common\vboindexer.cpp H:\Project\OpenGL\ogl-master\common\texture.cpp H:\Project\OpenGL\ogl-master\common\controls.cpp /link /libpath:%SDL2DIR%\lib\x86 /libpath:H:\Project\OpenGL\ogl-master\external\glfw-3.1.2\build\src\Release /libpath:H:\Project\OpenGL\ogl-master\external\glew-1.13.0\lib\Release\Win32 glew32.lib SDL2.lib SDL2main.lib opengl32.lib glfw3.lib /subsystem:console

//g++ -g -std=c++0x `sdl2-config --cflags` -I ../.. -I /media/kilopopo/FAD/Project/OpenGL/ogl-master -I /media/kilopopo/FAD/Project/OpenGL/ogl-master/external/glm-0.9.7.1 -I /media/kilopopo/FAD/Project/OpenGL/ogl-master/external/glfw-3.1.2/include/GLFW -I /home/kilopopo/Desktop/SDL2-2.0.3/include/ -I ../libs/gl3w main.cpp imgui_impl_sdl_gl3.cpp ../../imgui*.cpp ../libs/gl3w/GL/gl3w.c -I /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/ /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/vboindexer.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/objloader.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/controls.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/shader.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/texture.cpp `sdl2-config --libs` -lGL -lGLEW -ldl -o sdl2example


#include <imgui.h>
#include "imgui_impl_sdl_gl3.h"
#include <stdio.h>  
#include <inttypes.h>

//#include <windows.h>
#include <GL/gl3w.h>
//extern "C" {
#include <GL/gl.h>
//}
#include <common/shader.hpp>
#include <common/objloader.hpp>
#include <common/texture.hpp>
#include <common/controls.hpp>
#include <common/vboindexer.hpp>
// Include GLM
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
using namespace glm;

#include <SDL.h>

void render(float ftx, float fty, float ftz, GLuint vertexbuffer, GLuint uvbuffer, GLuint normalbuffer, GLuint elementbuffer, std::vector<unsigned short> indices, GLuint programID, GLuint MatrixID, GLuint ViewMatrixID, GLuint ModelMatrixID, GLuint Texture, GLuint TextureID, GLuint LightID);
static float ftx = 0, fty = 0, ftz = 0;
static float rotate = 0.0;

int main(int, char**)
{
    // Setup SDL
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
    {
        printf("Error: %s\n", SDL_GetError());
        return -1;
    }

    // Setup window
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
    SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
    SDL_DisplayMode current;
    SDL_GetCurrentDisplayMode(0, &current);
    SDL_Window *window = SDL_CreateWindow("ImGui SDL2+OpenGL3 example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
    SDL_GLContext glcontext = SDL_GL_CreateContext(window);
    gl3wInit();

    // Setup ImGui binding
    ImGui_ImplSdlGL3_Init(window);

    // Load Fonts
    // (there is a default font, this is only if you want to change it. see extra_fonts/README.txt for more details)
    //ImGuiIO& io = ImGui::GetIO();
    //io.Fonts->AddFontDefault();
    //io.Fonts->AddFontFromFileTTF("../../extra_fonts/Cousine-Regular.ttf", 15.0f);
    //io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 16.0f);
    //io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyClean.ttf", 13.0f);
    //io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyTiny.ttf", 10.0f);
    //io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());

    bool show_test_window = true;
    bool show_another_window = false;
    ImVec4 clear_color = ImColor(114, 144, 154);

    // Main loop
    bool done = false;
    GLuint programID = LoadShaders( "StandardShading.vertexshader", "StandardShading.fragmentshader" );

    // Get a handle for our "MVP" uniform
    GLuint MatrixID = glGetUniformLocation(programID, "MVP");
    GLuint ViewMatrixID = glGetUniformLocation(programID, "V");
    GLuint ModelMatrixID = glGetUniformLocation(programID, "M");

    GLuint TextureID  = glGetUniformLocation(programID, "myTextureSampler");

    // Load the texture
    GLuint Texture = 5;// loadDDS("uvmap.DDS");

    std::vector<glm::vec3> vertices;
    std::vector<glm::vec2> uvs;
    std::vector<glm::vec3> normals;
    bool res = loadOBJ("suzanne.obj", vertices, uvs, normals);

    // Load it into a VBO
    std::vector<unsigned short> indices;
    std::vector<glm::vec3> indexed_vertices;
    std::vector<glm::vec2> indexed_uvs;
    std::vector<glm::vec3> indexed_normals;
    indexVBO(vertices, uvs, normals, indices, indexed_vertices, indexed_uvs, indexed_normals);

    GLuint vertexbuffer;
    glGenBuffers(1, &vertexbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
    glBufferData(GL_ARRAY_BUFFER, indexed_vertices.size() * sizeof(glm::vec3), &indexed_vertices[0], GL_STATIC_DRAW);

    GLuint uvbuffer;
    glGenBuffers(1, &uvbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, uvbuffer);
    glBufferData(GL_ARRAY_BUFFER, indexed_uvs.size() * sizeof(glm::vec2), &indexed_uvs[0], GL_STATIC_DRAW);

    GLuint normalbuffer;
    glGenBuffers(1, &normalbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, normalbuffer);
    glBufferData(GL_ARRAY_BUFFER, indexed_normals.size() * sizeof(glm::vec3), &indexed_normals[0], GL_STATIC_DRAW);

    // Generate a buffer for the indices as well
    GLuint elementbuffer;
    glGenBuffers(1, &elementbuffer);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementbuffer);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned short), &indices[0] , GL_STATIC_DRAW);

    // Get a handle for our "LightPosition" uniform
    glUseProgram(programID);
    GLuint LightID = glGetUniformLocation(programID, "LightPosition_worldspace");

    while (!done)
    {
        SDL_Event event;
        while (SDL_PollEvent(&event))
        {
            ImGui_ImplSdlGL3_ProcessEvent(&event);
            if (event.type == SDL_QUIT)
                done = true;
        }
        ImGui_ImplSdlGL3_NewFrame();
        bool mainWindow = true;
        // 1. Show a simple window
        // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug"
        ImGui::Begin("Main Window", &mainWindow);
        {
            static float f = 0.0f;
            ImGui::Text("Hello, world!");
            ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
            ImGui::ColorEdit3("clear color", (float*)&clear_color);
            ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
        }

        ImGui::End();

        // Rendering
        glViewport(0, 0, (int)ImGui::GetIO().DisplaySize.x, (int)ImGui::GetIO().DisplaySize.y);
        glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
        glClear(GL_COLOR_BUFFER_BIT);

        render(ftx,fty,ftz, vertexbuffer, uvbuffer, normalbuffer, elementbuffer, indices, programID, MatrixID, ViewMatrixID, ModelMatrixID, Texture, TextureID, LightID);
        //fx = 0.0f;
        //rotate += 10;

        ImGui::Render();
        SDL_GL_SwapWindow(window);
    }

    // Cleanup
    ImGui_ImplSdlGL3_Shutdown();
    SDL_GL_DeleteContext(glcontext);  
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

void render(float ftx, float fty, float ftz, GLuint vertexbuffer, GLuint uvbuffer, GLuint normalbuffer, GLuint elementbuffer, std::vector<unsigned short> indices, GLuint programID, GLuint MatrixID, GLuint ViewMatrixID, GLuint ModelMatrixID, GLuint Texture, GLuint TextureID, GLuint LightID) 
{
// Clear the screen
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        // Use our shader
        glUseProgram(programID);

        // Compute the MVP matrix from keyboard and mouse input
        computeMatricesFromInputs();
        glm::mat4 ProjectionMatrix = getProjectionMatrix();
        glm::mat4 ViewMatrix = getViewMatrix();
        glm::mat4 ModelMatrix = glm::mat4(1.0);
        glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix;

        // Send our transformation to the currently bound shader, 
        // in the "MVP" uniform
        glUniformMatrix4fv(MatrixID, 1, GL_FALSE, &MVP[0][0]);
        glUniformMatrix4fv(ModelMatrixID, 1, GL_FALSE, &ModelMatrix[0][0]);
        glUniformMatrix4fv(ViewMatrixID, 1, GL_FALSE, &ViewMatrix[0][0]);

        glm::vec3 lightPos = glm::vec3(4,4,4);
        glUniform3f(LightID, lightPos.x, lightPos.y, lightPos.z);

        // Bind our texture in Texture Unit 0
        glActiveTexture(GL_TEXTURE0);
        glBindTexture(GL_TEXTURE_2D, Texture);
        // Set our "myTextureSampler" sampler to user Texture Unit 0
        glUniform1i(TextureID, 0);

        // 1rst attribute buffer : vertices
        glEnableVertexAttribArray(0);
        glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
        glVertexAttribPointer(
            0,                  // attribute
            3,                  // size
            GL_FLOAT,           // type
            GL_FALSE,           // normalized?
            0,                  // stride
            (void*)0            // array buffer offset
        );

        // 2nd attribute buffer : UVs
        glEnableVertexAttribArray(1);
        glBindBuffer(GL_ARRAY_BUFFER, uvbuffer);
        glVertexAttribPointer(
            1,                                // attribute
            2,                                // size
            GL_FLOAT,                         // type
            GL_FALSE,                         // normalized?
            0,                                // stride
            (void*)0                          // array buffer offset
        );

        // 3rd attribute buffer : normals
        glEnableVertexAttribArray(2);
        glBindBuffer(GL_ARRAY_BUFFER, normalbuffer);
        glVertexAttribPointer(
            2,                                // attribute
            3,                                // size
            GL_FLOAT,                         // type
            GL_FALSE,                         // normalized?
            0,                                // stride
            (void*)0                          // array buffer offset
        );

        // Index buffer
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementbuffer);

        // Draw the triangles !
        glDrawElements(
            GL_TRIANGLES,      // mode
            indices.size(),    // count
            GL_UNSIGNED_SHORT,   // type
            (void*)0           // element array buffer offset
        );

        //glDrawArrays(GL_TRIANGLES, 0, indices.size());
        glDisableVertexAttribArray(0);
        glDisableVertexAttribArray(1);
        glDisableVertexAttribArray(2);
}
OpenGL SDL2 imgui-master examples with custom loader using vbo indexing doesnt show any geometries. ``` // ImGui - standalone example application for SDL2 + OpenGL // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. //cl compile: // cl /Zi /MD /I ..\.. /I ..\libs\gl3w /I H:\Project\OpenGL\ogl-master\ /I H:\Project\OpenGL\ogl-master\external\glew-1.13.0\include\ /I H:\Project\OpenGL\ogl-master\external\glfw-3.1.2\include\GLFW\ /I H:\Project\OpenGL\ogl-master\external\glm-0.9.7.1\ /I %SDL2DIR%\include main.cpp imgui_impl_sdl_gl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c H:\Project\OpenGL\ogl-master\common\shader.cpp H:\Project\OpenGL\ogl-master\common\objloader.cpp H:\Project\OpenGL\ogl-master\common\vboindexer.cpp H:\Project\OpenGL\ogl-master\common\texture.cpp H:\Project\OpenGL\ogl-master\common\controls.cpp /link /libpath:%SDL2DIR%\lib\x86 /libpath:H:\Project\OpenGL\ogl-master\external\glfw-3.1.2\build\src\Release /libpath:H:\Project\OpenGL\ogl-master\external\glew-1.13.0\lib\Release\Win32 glew32.lib SDL2.lib SDL2main.lib opengl32.lib glfw3.lib /subsystem:console //g++ -g -std=c++0x `sdl2-config --cflags` -I ../.. -I /media/kilopopo/FAD/Project/OpenGL/ogl-master -I /media/kilopopo/FAD/Project/OpenGL/ogl-master/external/glm-0.9.7.1 -I /media/kilopopo/FAD/Project/OpenGL/ogl-master/external/glfw-3.1.2/include/GLFW -I /home/kilopopo/Desktop/SDL2-2.0.3/include/ -I ../libs/gl3w main.cpp imgui_impl_sdl_gl3.cpp ../../imgui*.cpp ../libs/gl3w/GL/gl3w.c -I /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/ /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/vboindexer.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/objloader.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/controls.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/shader.cpp /media/kilopopo/FAD/Project/OpenGL/ogl-master/common/texture.cpp `sdl2-config --libs` -lGL -lGLEW -ldl -o sdl2example #include <imgui.h> #include "imgui_impl_sdl_gl3.h" #include <stdio.h> #include <inttypes.h> //#include <windows.h> #include <GL/gl3w.h> //extern "C" { #include <GL/gl.h> //} #include <common/shader.hpp> #include <common/objloader.hpp> #include <common/texture.hpp> #include <common/controls.hpp> #include <common/vboindexer.hpp> // Include GLM #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> using namespace glm; #include <SDL.h> void render(float ftx, float fty, float ftz, GLuint vertexbuffer, GLuint uvbuffer, GLuint normalbuffer, GLuint elementbuffer, std::vector<unsigned short> indices, GLuint programID, GLuint MatrixID, GLuint ViewMatrixID, GLuint ModelMatrixID, GLuint Texture, GLuint TextureID, GLuint LightID); static float ftx = 0, fty = 0, ftz = 0; static float rotate = 0.0; int main(int, char**) { // Setup SDL if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { printf("Error: %s\n", SDL_GetError()); return -1; } // Setup window SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); SDL_DisplayMode current; SDL_GetCurrentDisplayMode(0, &current); SDL_Window *window = SDL_CreateWindow("ImGui SDL2+OpenGL3 example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE); SDL_GLContext glcontext = SDL_GL_CreateContext(window); gl3wInit(); // Setup ImGui binding ImGui_ImplSdlGL3_Init(window); // Load Fonts // (there is a default font, this is only if you want to change it. see extra_fonts/README.txt for more details) //ImGuiIO& io = ImGui::GetIO(); //io.Fonts->AddFontDefault(); //io.Fonts->AddFontFromFileTTF("../../extra_fonts/Cousine-Regular.ttf", 15.0f); //io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 16.0f); //io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyClean.ttf", 13.0f); //io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyTiny.ttf", 10.0f); //io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); bool show_test_window = true; bool show_another_window = false; ImVec4 clear_color = ImColor(114, 144, 154); // Main loop bool done = false; GLuint programID = LoadShaders( "StandardShading.vertexshader", "StandardShading.fragmentshader" ); // Get a handle for our "MVP" uniform GLuint MatrixID = glGetUniformLocation(programID, "MVP"); GLuint ViewMatrixID = glGetUniformLocation(programID, "V"); GLuint ModelMatrixID = glGetUniformLocation(programID, "M"); GLuint TextureID = glGetUniformLocation(programID, "myTextureSampler"); // Load the texture GLuint Texture = 5;// loadDDS("uvmap.DDS"); std::vector<glm::vec3> vertices; std::vector<glm::vec2> uvs; std::vector<glm::vec3> normals; bool res = loadOBJ("suzanne.obj", vertices, uvs, normals); // Load it into a VBO std::vector<unsigned short> indices; std::vector<glm::vec3> indexed_vertices; std::vector<glm::vec2> indexed_uvs; std::vector<glm::vec3> indexed_normals; indexVBO(vertices, uvs, normals, indices, indexed_vertices, indexed_uvs, indexed_normals); GLuint vertexbuffer; glGenBuffers(1, &vertexbuffer); glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); glBufferData(GL_ARRAY_BUFFER, indexed_vertices.size() * sizeof(glm::vec3), &indexed_vertices[0], GL_STATIC_DRAW); GLuint uvbuffer; glGenBuffers(1, &uvbuffer); glBindBuffer(GL_ARRAY_BUFFER, uvbuffer); glBufferData(GL_ARRAY_BUFFER, indexed_uvs.size() * sizeof(glm::vec2), &indexed_uvs[0], GL_STATIC_DRAW); GLuint normalbuffer; glGenBuffers(1, &normalbuffer); glBindBuffer(GL_ARRAY_BUFFER, normalbuffer); glBufferData(GL_ARRAY_BUFFER, indexed_normals.size() * sizeof(glm::vec3), &indexed_normals[0], GL_STATIC_DRAW); // Generate a buffer for the indices as well GLuint elementbuffer; glGenBuffers(1, &elementbuffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementbuffer); glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned short), &indices[0] , GL_STATIC_DRAW); // Get a handle for our "LightPosition" uniform glUseProgram(programID); GLuint LightID = glGetUniformLocation(programID, "LightPosition_worldspace"); while (!done) { SDL_Event event; while (SDL_PollEvent(&event)) { ImGui_ImplSdlGL3_ProcessEvent(&event); if (event.type == SDL_QUIT) done = true; } ImGui_ImplSdlGL3_NewFrame(); bool mainWindow = true; // 1. Show a simple window // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug" ImGui::Begin("Main Window", &mainWindow); { static float f = 0.0f; ImGui::Text("Hello, world!"); ImGui::SliderFloat("float", &f, 0.0f, 1.0f); ImGui::ColorEdit3("clear color", (float*)&clear_color); ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); } ImGui::End(); // Rendering glViewport(0, 0, (int)ImGui::GetIO().DisplaySize.x, (int)ImGui::GetIO().DisplaySize.y); glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w); glClear(GL_COLOR_BUFFER_BIT); render(ftx,fty,ftz, vertexbuffer, uvbuffer, normalbuffer, elementbuffer, indices, programID, MatrixID, ViewMatrixID, ModelMatrixID, Texture, TextureID, LightID); //fx = 0.0f; //rotate += 10; ImGui::Render(); SDL_GL_SwapWindow(window); } // Cleanup ImGui_ImplSdlGL3_Shutdown(); SDL_GL_DeleteContext(glcontext); SDL_DestroyWindow(window); SDL_Quit(); return 0; } void render(float ftx, float fty, float ftz, GLuint vertexbuffer, GLuint uvbuffer, GLuint normalbuffer, GLuint elementbuffer, std::vector<unsigned short> indices, GLuint programID, GLuint MatrixID, GLuint ViewMatrixID, GLuint ModelMatrixID, GLuint Texture, GLuint TextureID, GLuint LightID) { // Clear the screen glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Use our shader glUseProgram(programID); // Compute the MVP matrix from keyboard and mouse input computeMatricesFromInputs(); glm::mat4 ProjectionMatrix = getProjectionMatrix(); glm::mat4 ViewMatrix = getViewMatrix(); glm::mat4 ModelMatrix = glm::mat4(1.0); glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix; // Send our transformation to the currently bound shader, // in the "MVP" uniform glUniformMatrix4fv(MatrixID, 1, GL_FALSE, &MVP[0][0]); glUniformMatrix4fv(ModelMatrixID, 1, GL_FALSE, &ModelMatrix[0][0]); glUniformMatrix4fv(ViewMatrixID, 1, GL_FALSE, &ViewMatrix[0][0]); glm::vec3 lightPos = glm::vec3(4,4,4); glUniform3f(LightID, lightPos.x, lightPos.y, lightPos.z); // Bind our texture in Texture Unit 0 glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, Texture); // Set our "myTextureSampler" sampler to user Texture Unit 0 glUniform1i(TextureID, 0); // 1rst attribute buffer : vertices glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); glVertexAttribPointer( 0, // attribute 3, // size GL_FLOAT, // type GL_FALSE, // normalized? 0, // stride (void*)0 // array buffer offset ); // 2nd attribute buffer : UVs glEnableVertexAttribArray(1); glBindBuffer(GL_ARRAY_BUFFER, uvbuffer); glVertexAttribPointer( 1, // attribute 2, // size GL_FLOAT, // type GL_FALSE, // normalized? 0, // stride (void*)0 // array buffer offset ); // 3rd attribute buffer : normals glEnableVertexAttribArray(2); glBindBuffer(GL_ARRAY_BUFFER, normalbuffer); glVertexAttribPointer( 2, // attribute 3, // size GL_FLOAT, // type GL_FALSE, // normalized? 0, // stride (void*)0 // array buffer offset ); // Index buffer glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementbuffer); // Draw the triangles ! glDrawElements( GL_TRIANGLES, // mode indices.size(), // count GL_UNSIGNED_SHORT, // type (void*)0 // element array buffer offset ); //glDrawArrays(GL_TRIANGLES, 0, indices.size()); glDisableVertexAttribArray(0); glDisableVertexAttribArray(1); glDisableVertexAttribArray(2); } ```
edselmalasig commented 2016-01-14 11:04:30 +00:00 (Migrated from github.com)

glDrawArrays(GL_TRIANGLES, 0, indices.size()); work

glDrawArrays(GL_TRIANGLES, 0, indices.size()); work
edselmalasig commented 2016-01-14 11:05:20 +00:00 (Migrated from github.com)

common files can be located here
https://github.com/opengl-tutorials/ogl

common files can be located here https://github.com/opengl-tutorials/ogl
ocornut commented 2016-01-14 11:08:29 +00:00 (Migrated from github.com)

Sorry Edsel this is an OpenGL problem at this point.
If the SDL2+OpenGL2/3 works for you use them as a base and work out the difference with your code.
Also see https://github.com/ocornut/imgui/issues/468 for your previous issue
If anyone feels like debugging Edsel's bug feel free to..

Sorry Edsel this is an OpenGL problem at this point. If the SDL2+OpenGL2/3 works for you use them as a base and work out the difference with your code. Also see https://github.com/ocornut/imgui/issues/468 for your previous issue If anyone feels like debugging Edsel's bug feel free to..
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ocornut/imgui#483
No description provided.