Я не уверен, что правильно использую glDrawTex_OES.На самом деле, я уверен, что не потому, что получаю черный прямоугольник на экране, а не предполагаемую текстуру.
Чтобы убрать глупые точки с пути: Да, строка GL Extensionсодержит токен OES_draw_textureДа, текстура загружается в память / и т.д.правильно: он отображается очень хорошо, если я сопоставляю его с многоугольником.
Из прочтения различных битов документации я могу найти для него, похоже, мне нужно "настроить [e]прямоугольник обрезки текстуры ... через TexParameteriv () с pname равным TEXTURE_CROP_RECT_OES ".Согласно этому посту на форумах khronos (лучшую документацию для меня может найти google), значения для этого являются "Ucr, Vcr, Wcr, Hcr. То есть left / bottom / width / height"
Вот код рендеринга:
void SetUpCamera( int windowWidth, int windowHeight, bool ortho ) // only called once
{
glViewport( 0, 0, windowWidth, windowHeight );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
if( ortho )
{
float aspect = (float)windowWidth / (float)windowHeight;
float halfHeight = 32;
glOrthof( -halfHeight*aspect, halfHeight*aspect, -halfHeight, halfHeight, 1.0f, 100.0f );
}
else
{
mygluPerspective( 45.0f, (float)windowWidth / (float)windowHeight, 1.0f, 100.0f ); // I don't _actually_ have glu, but that's irrelevant--this does what you'd expect.
}
}
void DrawTexture( int windowWidth, int windowHeight, int texID )
{
// Clear back/depth buffer
glClearColor( 1, 1, 1, 1 );
glClearDepth( 1.0f );
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
// Next 2 lines probably not necessary, but, you know, sanity check:
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
// set up texture
glBindTexture( GL_TEXTURE_2D, texID ); // texID is the glGenTexture result for a 64x64 2D RGB_8 texture - nothing crazy.
GLint coords [] = {0, 0, 64, 64};
glTexParameteriv( GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, coords );
// blit? =(
glDrawTexiOES( windowWidth / 2 - 32, windowHeight - 70, 10, 64, 64 );
}
Я что-то упускаю из виду?Делать что-нибудь просто глупо?