तो, मेरी परियोजना में मैं Buffer.cpp नामक बफर बनाने के लिए एक अलग वर्ग का उपयोग कर रहा हूं। यहाँ निर्माताglGenBuffers() सेगमेंटेशन गलती से दुर्घटनाग्रस्त हो रहा है। (सी ++/जीएलएफडब्लू/जीएलडब्ल्यू)
#define GLEW_STATIC
#define GLEW_NO_GLU
#define GLFW_NO_GLU
#include "GL/glew.h"
#include "GL/glfw.h"
Buffer::Buffer(GLenum _type, const void *data, GLsizei _size, GLenum usage) : type(_type), size(_size)
{
...
//Generate Buffer
glGenBuffers(1, &buffer);
...
}
और सदस्यों की परिभाषा है:
GLuint buffer;
const GLsizei size;
const GLenum type;
Buffer(GLenum, const void*, GLsizei, GLenum);
समस्या यह है कि जब मैं उदाहरण के लिए इस आदेश का उपयोग कर एक बफर उत्पन्न करने के लिए प्रयास करें:
Buffer vBuffer(GL_ARRAY_BUFFER, vertexPositions, sizeof(vertexPositions), GL_STATIC_DRAW);
प्रोग्राम ग्लेनबफर() पर समाप्ति स्थिति "-1073741819" के साथ दुर्घटनाग्रस्त हो जाता है। मैंने कार्यक्रम को डीबग करने की कोशिश की और यह मुझे मिला:
Program received signal SIGSEGV, Segmentation fault.
मेरा कार्ड ओपनजीएल 1.5 का समर्थन करता है, इसलिए ऐसा नहीं है।
यह भी ध्यान देने योग्य है कि मैंने एक स्थिर glew लाइब्रेरी स्वयं संकलित की है।
संपादित करें: मैंने अंततः समस्या को ठीक किया। समस्या यह थी कि मैं ओपनजीएल प्रतिपादन संदर्भ बनाने से पहले glewInit() को कॉल कर रहा था।
क्या आपने 'glGetError() 'कोशिश की? – Florian
क्या आप gl.h आयात नहीं कर रहे हैं? केवल इसलिए कि मेरे पास हेडर आयात नहीं किए जाने से पहले अजीब दुर्घटनाएं थीं और जीसीसी –
पर रोया नहीं था क्या आपके पास उस 'glenInit() 'd जीएल संदर्भ के समय है जब तक आप' glGenBuffers() 'कॉल पर जाते हैं? – genpfault