#define STB_IMAGE_IMPLEMENTATION #include #include #include #include #include #include #include "data.cpp" unsigned int gridX = 8, gridY = 8; unsigned int sizeX=500, sizeY=500; float* tileCoords = makeGridPoints(gridX, gridY); unsigned int* tileIndices = makeGridIndex(gridX, gridY); int main() { NB::NBWindow myWindow(800, 600, "Howdy Naif!"); auto window = myWindow.getWindow(); myWindow.init(); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); // Create Data float* screenCoords = scaleGridPoints(gridX, gridY, (float)sizeX/(float)800, (float)sizeY/(float)600, tileCoords); // Use and set shader Shader myShader("../shaders/vert.vs", "../shaders/frag.fs"); myShader.use(); // Create Vertex Buffer and bind it to array buffer, then specifiy how to use that data unsigned int VAO, VBO; glGenVertexArrays(1, &VAO); glGenBuffers(1, &VBO); glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, 5*gridX*gridY*sizeof(float), screenCoords, GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void*)0); glEnableVertexAttribArray(0); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void*)(3*sizeof(float))); glEnableVertexAttribArray(1); delete[] screenCoords; // Element Buffers unsigned int EBO; glGenBuffers(1, &EBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, 6*(gridX-1)*(gridY-1)*sizeof(unsigned int), tileIndices, GL_STATIC_DRAW); myShader.use(); glBindVertexArray(VAO); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glProvokingVertex(GL_FIRST_VERTEX_CONVENTION); glBindBuffer(GL_ARRAY_BUFFER, VBO); // Window loop while(!glfwWindowShouldClose(window)) { // Input checking processInput(window); // Rendering Loop glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glDrawElements(GL_TRIANGLES, (gridX-1)*(gridY-1)*6, GL_UNSIGNED_INT, 0); // Events and buffer swap glfwPollEvents(); glfwSwapBuffers(window); } glfwTerminate(); delete[] tileCoords; //delete[] tileIndices; return 0; }