1
テクスチャを四方に描画したい。私は次のように整理する画素の1D unsigned char型バッファから私のテクスチャをバインドしたい:Open GL - ピクセルバッファからテクスチャをロードする方法
各ピクセルは2バイトで構成され、これらの2つのバイトは、16ビットグレースケール値です。
私は実際に多くのことを試してみましたが、私は私のクワッドに何を見ることができない。
void RawImageDrawer::initializeGL() {
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glDepthFunc((GL_LEQUAL));
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
void RawImageDrawer::resizeGL(int width, int height) {
if (height == 0)
height = 1;
glViewport(0, 0, width, height);
glMatrixMode(GL_MODELVIEW);*/
glLoadIdentity();
}
void RawImageDrawer::loadTexture() {
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(
GL_TEXTURE_2D,
0,
GL_RED,
1024,
1024,
0,
GL_LUMINANCE,
GL_UNSIGNED_BYTE,
buffer //unsigned char* described up there
);
}
void RawImageDrawer::paintGL() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, 0.0f);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glTexCoord2i(0,0); glVertex3f(-0.5f, -0.5f, 0);
glTexCoord2i(0,1); glVertex3f(0.5f, -0.5f, 0);
glTexCoord2i(1,1); glVertex3f(0.5f, 0.5f, 0);
glTexCoord2i(1,0); glVertex3f(-0.5f, 0.5f, 0);
glEnd();
}
私もTEXTURE_1DにTEXTURE_2Dを変更しようとしました、ので...
答えをくれてありがとう、これらの変更を加えましたが、私はまだ問題があります。TEXTURE_2Dを使用すると、glTexImage2D関数呼び出しでプログラムがクラッシュします。 TEXTURE_1Dを使用してもプログラムはクラッシュしませんが、クワッドには何もしません。私のuchar *配列は、実際のデータの前後にパディングする必要がありますか? –
@LaurentJerber:デフォルトでは、行間のオフセットは4バイトの倍数でなければなりませんが、投稿したコードではすでにそうです。それでもクラッシュした場合は、投稿していないコードのどこかに問題がなければなりません。特に、バッファをどのように割り当てるかを見てください。おそらくバグがあります。 – ybungalobill