Ошибка сегментации glGetIntegerv ()

Я получаю ошибку сегментации в OpenGL, когда я запускаю glGetIntegerv () в моей программе

вот полная программа

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <stdio.h>

// Shader sources
const GLchar vertexSource[] =
"#version 430 core\n""layout(location = 0) in vec4 vPosition""void main() {""   gl_Position = vec4(position, 0.0, 1.0);""}";

const GLchar fragmentSource[] =
"#version 430 core\n"
"out vec4 fColor""void main() {""   fColor = vec4(0.0,0.0,1.0, 1.0);""}";

int main(){

glfwInit();

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);

GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);
glfwMakeContextCurrent(window);

glewExperimental = GL_TRUE;
glewInit();//Create Vertex Array Object
GLuint vao;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);

// Create a Vertex Buffer Object and copy the vertex data to it
GLuint vbo;
glGenBuffers(1, &vbo);GLfloat vertices[] = {
-0.5f,  0.5f, 1.0f, 0.0f, 0.0f, // Top-left
0.5f,  0.5f, 0.0f, 1.0f, 0.0f, // Top-right
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, // Bottom-right
-0.5f, -0.5f, 1.0f, 1.0f, 1.0f  // Bottom-left
};

glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);GLint * name;
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, name);//printf(" %d \n", *kay);}

программа не выдаст мне никаких ошибок, если я отключу функцию glGetIntegerv (), так что она определенно имеет к этому какое-то отношение, и да, я понимаю, что программа не завершена, но, безусловно, glGetIntegerv не имеет к этому никакого отношения , это должно быть доступ к моему GPU для этой информации

-1

Решение

name неинициализированный указатель Обычно он имеет некоторое значение мусора, что означает, что он может указывать на любое возможное местоположение. Запись в него является неопределенным поведением, и обычно приводит к чему-то вроде ошибки сегментации.

На самом деле, вам не нужен указатель здесь:

GLint name;
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &name);
2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector