현재 투명한 배경을 가진 아이콘을로드하려고합니다.투명한 배경으로 아이콘을로드하고 C++/OpenGL로 올바르게 표시하는 방법은 무엇입니까?
그럼 비트 맵을 만들고 glTexImage2D()를 통해 비트를 표시하려고합니다.
그러나 아이콘의 배경은 결코 여기에
내 코드의 일부이다 :(투명 얻을 수 없습니다 :
DWORD dwBmpSize = 32*32*4;
byte* bmBits = new byte[dwBmpSize];
for(unsigned int i = 0; i <dwBmpSize; i+=4)
{
bmBits[i] = 255; // R
bmBits[i+1] = 0; // G
bmBits[i+2] = 0; // B
bmBits[i+3] = 255;// A
// I always get a red square, no matter what value i fill into alpha
}
//create texture from bitmap
glTexImage2D(target, 0,
GL_RGBA, 32, 32,
0, GL_RGBA, GL_UNSIGNED_BYTE, bmBits);
delete bmBits;
편집 : 내 비트 알파가 있는지, 확인하기 위해 코드를 변경 채널. 지금 내가 대신 아이콘을로드하는, 무슨 일이 참조하는 사용자 정의 값으로 32 × 32 PXL 영역을 작성하고 있습니다. 그것은 여전히 작동하지 않습니다! 내가 실종? 아니면 그냥 수 없습니다입니다 무엇
?
,
나는 API를 모르지만'DIB_RGB_COLORS'는 생기고,'RGB'는'A'를 그리워합니다. 어쩌면'bmp-> bmBits'의 원시 값을 조사하여'GetDIBIts '이후에 알파 값이 있는지 여부를 알 수 있습니다. –
분명히 가능합니다. 뭔가 잘못하고있는 것 같습니다. –
좋아요, 이제 코드를 변경 했으므로 알파 채널이 있다는 것을 확신합니다. 나는 GetDIBits()를 제거했다. 하지만 여전히 작동하지 않습니다 : ( – slaindevil