У меня ошибка, которую я не знаю, как решить.
Я создал простую программу, используя VS2012, для тестирования SOIL (пример кода с сайта SOIL):
#include "SOIL.h"#include <iostream>
#include <glew.h>
#include <freeglut.h>
int main() {
std::cout << "Started" << std::endl;
/* load an image file directly as a new OpenGL texture */
GLuint tex_2d = SOIL_load_OGL_texture
(
"img.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);
/* check for an error during the load process */
if( 0 == tex_2d )
{
printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
}
}
Я получаю ошибку:
Unhandled exception at 0x585727FF (msvcr110d.dll) in imageLib.exe: 0xC0000005: Access violation reading location 0x00000000.
Любая помощь приветствуется. Спасибо.
Все, что я сделал, чтобы убедиться, что GL был загружен, прежде чем пытаться использовать GLuint, как предложил Necrolis.
Если библиотека загружена правильно, этот небольшой пример должен работать без ошибок (ничего не отображается, но показывает порядок GL и SOIL:
#include "SOIL.h"#include <iostream>
#include <glew.h>
#include <freeglut.h>
#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
void LoadTexture() {
/* load an image file directly as a new OpenGL texture */
GLuint tex_2d = SOIL_load_OGL_texture
(
"Data/img.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);
/* check for an error during the load process */
if( 0 == tex_2d )
{
printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
}
// Typical Texture Generation Using Data From The Bitmap
glBindTexture(GL_TEXTURE_2D, tex_2d);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
int main(int argc, char** argv) {
std::cout << "Started" << std::endl;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
glutInitWindowPosition(100, 100);
glutCreateWindow("Tutorial 15");
glutSwapBuffers();
LoadTexture();
glEnable(GL_TEXTURE_2D); // Enable Texture Mapping ( NEW )
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glutMainLoop();
return 0;
}
Я сталкивался с этим вопросом очень много раз. Я думаю, что это связано с отсутствием обработки ошибок SOIL библиотеки.
при загрузке данных изображения путь может быть неправильным. В моих случаях я пишу путь как в этой форме;
C:/Users/User/Pictures/texture.JPG
но когда я так изменяю этот путь, при создании проекта ошибки не возникает;)
file:///C:/Users/User/Pictures/texture.JPG