PDA

View Full Version : basic opengl problem



Gravis
21st January 2010, 02:24
this is an opengl problem but because it's partially qt, i thought it best to ask here. im new to opengl so bear with me.

i have data for a texture and i bind the texture in the init code and draw it in the paint code and yet only the black background is shown.

what am i doing wrong? :confused:

note: when proper opengl code is put in this class, it does draw, so it's not another part of my project, it's in this class specifically.


static GLint block[] =
{
0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xff000000, 0xffe04000, 0xffe04000,
0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xff000000, 0xffe0e0a0,
0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe04000, 0xff000000,
0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe04000, 0xff000000,
0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe04000, 0xff000000,
0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000,
0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe0e0a0, 0xffe0e0a0, 0xff000000, 0xff000000, 0xffe0e0a0,
0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0,
0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000,
0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000,
0xffe0e0a0, 0xffe04000, 0xff000000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xff000000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000,
0xffe0e0a0, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe0e0a0, 0xffe0e0a0, 0xff000000, 0xff000000, 0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0,
0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0,
0xffe04000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xffe0e0a0,
0xffe04000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xff000000, 0xffe04000, 0xffe04000, 0xff000000, 0xff000000, 0xff000000,
0xff000000, 0xffe0e0a0, 0xffe04000, 0xffe0e0a0, 0xffe04000, 0xffe04000, 0xffe0e0a0, 0xff000000, 0xffe0e0a0, 0xff000000, 0xff000000, 0xffe0e0a0, 0xffe0e0a0, 0xff000000, 0xff000000, 0xffe0e0a0,
};

GLDemo::GLDemo( QWidget* parent )
: QGLWidget( parent )
{
}

void GLDemo::initializeGL()
{
qglClearColor( Qt::black ); // Let OpenGL clear to black
QImage pix((const uchar*)block, 16, 16, QImage::Format_ARGB32);
object = bindTexture(pix, GL_TEXTURE_2D, GL_RGB8);
glShadeModel( GL_FLAT );
}

void GLDemo::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
drawTexture(QPointF(0, 0), object, GL_TEXTURE_2D);
}

void GLDemo::resizeGL( int w, int h )
{
glViewport( 0, 0, (GLint)w, (GLint)h );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
glMatrixMode( GL_MODELVIEW );
}

wysota
22nd January 2010, 11:55
Do you take into consideration that QImage stores data in a format different than what OpenGL expects? Why do you go through QImage anyway? Why don't bind the texture directly?