Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Как проткнуть текстуру в OpenGL?


Автор: Roont 25.2.2010, 14:18
доброго времени суток!
 
Такой вопрос: хочу продырявить текстуру, т.е. произвольным пикселям назначить альфу ноль.  
Вся идея состояла в том, что бы glGetTexImage выдавал мне пиксели, я им по bmpшной маске обнулял альфу и glTexImage или glTexSubImage запихивал бы обратно в фрамебуфер.
На первый взгляд все логично, но glGetError после glGetTexImage() дает  GL_INVALID_ENUM, что бы я не делал..  
 
Код

  COLOR* pixels = new COLOR [ tex->m_nRealW * tex->m_nHeight ];
    glGetTexImage( tex->texture, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels );
    int err = glGetError();// 1280 всегда ...%)
 
 
    for ( int x = 0; x < pen->Size().cx; x ++ )
    {
        for ( int y = 0; y < pen->Size().cy; y ++ )
        {
            POINT inmask_pt = {x,y};
            if ( 0x00000000 != pen->Get( inmask_pt )  ) // pen- bmpешка, рисуем по белому
            {
                pixels[ ( pt.x + x ) + tex->m_nWidth * ( pt.y + y ) ] &= 0xffffff00;
            }
        }
    }
 
    glTexImage2D( tex->texture, 0, GL_RGBA8, tex->m_nRealW, tex->m_nRealH, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels );
 
err = 1280 ( INVALID_ENUM );

GL_ALPHA_BLENDING is enabled, и текстура 2Dшная...  
В чем проблема?
P.S. А вообще приму любой совет, как это ( дырку в текстуре ) можно оргаинзавать. 

Автор: Roont 26.2.2010, 09:38
все, разобрался... glGetTexImage( GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels ); надо было...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)