0

解決方法がわからないエラーが発生しました。

SOIL をテストするために、VS2012 を使用して簡単なプログラムを作成しました (SOIL の Web サイトのサンプル コード)。

#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.

どんな助けでも大歓迎です。ありがとうございました。

4

2 に答える 2

0

Necrolisが提案したように、GLuintを使用する前に、GLがロードされていることを確認するだけでした。

ライブラリが正しくロードされている場合、この小さな例はエラーなしで実行されます (何も表示されませんが、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;
}
于 2013-05-12T13:43:07.323 に答える
0

私はこれらの問題に何度も直面してきました。これは、エラー処理の SOIL ライブラリがないことが原因だと思います。

画像データをロードするとき、パスが正しくない可能性があります。私の場合、そのような形でパスを書きます。

C:/Users/User/Pictures/texture.JPG

しかし、このパスをそのように変更すると、プロジェクトのビルド時にエラーは発生しません;)

file:///C:/Users/User/Pictures/texture.JPG
于 2014-07-14T09:21:59.357 に答える