2015-02-15 4 views
1

Я получаю эту ошибку при компиляции и запуске приложения. Обычно мне приходится удалять стоп в Xcode и запускать его снова. Иногда это появляется, иногда это не так. Действительно раздражает.Swift EXC_Bad_Access по вызову OpenGL

Вот мой код:

func createTextures() { 
     let width = 2048; 
     let height = 2048; 

     texBuffer = GLubyte(); 

     for (var i = 0; i < foregroundTex.count; i++) { 

      if (textures[i + 1] != "null") { 
       glGenTextures(1, &foregroundTex[i]); 

       glBindTexture(GLenum(GL_TEXTURE_2D), foregroundTex[i]); 

       glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_WRAP_S), GL_CLAMP_TO_EDGE); 
       glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_WRAP_T), GL_CLAMP_TO_EDGE); 

       glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_MIN_FILTER), GL_LINEAR); 
       glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_MAG_FILTER), GL_LINEAR); 

       glTexImage2D(GLenum(GL_TEXTURE_2D), GLint(0), GLint(GL_RGBA), GLsizei(width), GLsizei(height), GLint(0), GLenum(GL_RGBA), GLenum(GL_UNSIGNED_BYTE), &texBuffer); 

Я получаю EXC_BAD_ACCESS на последнем OpenGL вызова glTexImage2D().

Я думаю, что это исходит от texBuffer переменной. Возможно, я не инициализирую его правильно? Я не знаю, как еще инициализировать его в Swift для хранения буфера текстуры.

+0

Вы пробовали использовать только '' GL_RGBA' без отблеска() 'в' glTexImage2D'? – Unheilig

ответ

0

texbuffer необходимо хранить более одного байта. malloc с width * height * 4:

var texBuffer = malloc(width*height*4) 
Смежные вопросы