PDA

View Full Version : glCreateBuffers Access Violation GLFW/GLEW



puregainz
03-06-2017, 04:04 PM
Hello guys,

I know This issue has been addressed many times, but despite trying every solutions given for this problem, I can't seem to solve the issue:

I get:

Exception thrown at 0x0000000000000000 in codefortress_client.exe: 0xC0000005: Access violation executing location 0x0000000000000000.

What I have done:
-Created an OpenGL 3.2 context with forward compatibility for 3.0+...
-Init in the right order GLFW > Window context > GLEW with experimental= true



#include <stdio.h>
#include <stdlib.h>

//#include <windows.h>
#include <math.h>

#include "codefortress_core.h"

#include "dataparser.h"
#include "utils.h"

using namespace std;

using namespace utils;
using namespace dataparser;

// -------------------------------- MAIN ------------------------------- //
int main()
{

// -------------------------------- INIT ------------------------------- //

// Init GLFW
if (glfwInit() != GL_TRUE) {
graphic_engine::ge_crash("Failed to initialize GLFW\n");
//fprintf(stderr, "Failed to initialize GLFW\n");
//return -1;
}

// Create a rendering window with OpenGL 3.2 context
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //3.2 works //4.3
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);

GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL); //glfwGetPrimaryMonitor() avant dernier parama
glfwMakeContextCurrent(window);

if (!window)
{
fprintf(stderr, "Failed to open GLFW window.\n");
glfwTerminate();
exit(EXIT_FAILURE);
}

glfwMakeContextCurrent(window);

glfwSetKeyCallback(window, graphic_engine::key_callback);

// Init GLEW
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK) {
graphic_engine::ge_crash("Failed to initialize GLEW\n");
//fprintf(stderr, "Failed to initialize GLEW\n");
//return -1;
}

// ----------------------------- RESOURCES ----------------------------- //

//map values
const int map_size = 16;
const int spice = 28; //colored differently
int map[map_size*map_size];
for (int i = 0; i < map_size*map_size;i++) {
if (i%spice == 0) {
map[i] = 1;
}else {
map[i] = 0;
}
}


//declaration
GLuint vao;
GLuint buffer[1]; //map buffer

//first VAO
glCreateVertexArrays(1, &vao);

//buffer
glCreateBuffers(1, &buffer[0]);
glNamedBufferStorage(buffer[0],sizeof(map),map,0); //fill with map
glVertexArrayVertexBuffer(vao, 0, buffer[0], 0, sizeof(int));

//attrib linked
glVertexArrayAttribFormat(vao,0,1,GL_INT,GL_FALSE, 0);
glVertexArrayAttribBinding(vao, 0, 0);
glEnableVertexArrayAttrib(vao, 0);



// ---------------------------- RENDERING LOOP ------------------------------ //

static GLfloat color[] = { 0.0f,0.0f, 0.0f, 1.0f };

while (!glfwWindowShouldClose(window))
{

//flashy background
float curtime = (float)glfwGetTime();

color[0] = cosf(curtime)*0.5f + 0.5f;
color[1] = sinf(curtime)*0.5f + 0.5f;

glClearBufferfv(GL_COLOR, 0, color);

glfwSwapBuffers(window);
glfwPollEvents();

}
glfwTerminate();

return 0;
}


Some help would be very appreciated, thank you in advance.