質問: "test.png"; glEnable(GL_TEXTURE_2D); //テクスチャマッピング有効 glPushMatrix(); mqoCallModel(test_model); //モデルを呼び出す(OK) glBindTexture(GL_TEXTURE_2D, [略]); // テクスチャの割り当て //エラー発生(黒や青紫などの単色がランダムに描画されたり、エラーコード「-1073741819」が吐き出される) glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,[略],[略],GL_BGR, GL_UNSIGNED_BYTE, test); glPopMatrix(); glDisable(GL_TEXTURE_2D); //テクスチャマッピング無効 ```
回答: `glTexSubImage2D`にテクスチャデータとして`test`...つまり「test.BMP」という文字列そのものを渡してしまっているように見えますが、画像ファイルの内容を色データの配列として読み込む機能は実装されていますでしょうか? tiitoiさんからご提示いただいた床井研究室 - 第18回 テクスチャオブジェクトの中の > > > ``` > ・・・ > > /* > ** 初期化 > */ > static void init(void) > { > /* テクスチャの読み込みに使う配列 */ > GLubyte texture[TEXHEIGHT * TEXWIDTH * 4]; > FILE *fp; > > #if 0 > /* テクスチャ画像の読み込み */ > if ((fp = fopen(texture1, "rb")) != NULL) { > fread(texture, sizeof texture, 1, fp); > fclose(fp); > } > else { > perror(texture1); > } > #endif > > /* テクスチャ名を1個生成する */ > glGenTextures(1, texname); > > /* テクスチャ画像はワード単位に詰め込まれている */ > glPixelStorei(GL_UNPACK_ALIGNMENT, 4); > ``` > > や、OpenGLの使い方:テクスチャ編 - Qiitaの「画像の読み込み」の節で紹介されているライブラリを用いるなりして、画像ファイルの中身を取り出してやる必要がありそうです。 ※念のため補足しますと、床井氏の場合はファイルの中身そのものをテクスチャデータとして読み込んでおります。ですので、画像ファイルは床井研究室 - 第1回 画像の読み込みで言及されている「RAW画像」...ヘッダなどの余計なデータを含まず、圧縮もされていない画像である必要があるでしょう。