1

NeHeのチュートリアルを行っていますが、バンプマッピングに関して問題が発生しています。これまで、SOILライブラリを使用して画像ファイルをOpenGLにロードしてきました。これはうまく機能します。ただし、バンプマッピングのチュートリアルでは、画像データへのポインタを使用して、画像の色をピクセルごとに変更します。私の知る限り、SOILライブラリではこれを行うことはできません。グラウが非推奨になった今、この影響を与える良い方法はありますか?どうやら私たちはアルファチャンネルをピクセルカラーの赤成分の値に設定しようとしています。別の注意点として、c ++はバイトとcharの違いを気にしないので(同じサイズですよね?)、これらをchar配列にロードしていますか、それとも私がこれに欠けているものが他にありますか?

// Load The Logo-Bitmaps
if (Image=auxDIBImageLoad("Data/OpenGL_ALPHA.bmp")) {
    alpha=new char[4*Image->sizeX*Image->sizeY];
    // Create Memory For RGBA8-Texture
    for (int a=0; a<Image->sizeX*Image->sizeY; a++)
        alpha[4*a+3]=Image->data[a*3];               // Pick Only Red Value As Alpha!
    if (!(Image=auxDIBImageLoad("Data/OpenGL.bmp"))) status=false;
    for (a=0; a<Image->sizeX*Image->sizeY; a++) {
        alpha[4*a]=Image->data[a*3];             // R
        alpha[4*a+1]=Image->data[a*3+1];         // G
        alpha[4*a+2]=Image->data[a*3+2];         // B
    }
4

1 に答える 1

1

SOIL_load_image()生の画像ビットを提供する必要があります:

/**
    Loads an image from disk into an array of unsigned chars.
    Note that *channels return the original channel count of the
    image.  If force_channels was other than SOIL_LOAD_AUTO,
    the resulting image has force_channels, but *channels may be
    different (if the original image had a different channel
    count).
    \return 0 if failed, otherwise returns 1
**/
unsigned char*
    SOIL_load_image
    (
        const char *filename,
        int *width, int *height, int *channels,
        int force_channels
    );
于 2012-06-19T16:25:57.233 に答える