设置带纹理的物体的透明度有两种方式:
1,使用glColor4f();通过设置alpha分量改变物体的透明度。
2,通过设置纹理的alpha分量改变纹理的透明度。如果纹理没有alpha分量,通过函数添加alpha分量。
int CTexture::AddAlphaLayer(unsigned char alpha) // 0 - 255
{
// Alloc memory
unsigned char *pData = new unsigned char[4*m_Width*m_Height];
if(pData == NULL)
{
AfxMessageBox("CTexture::AddAlphaLayer : insuffisant memory");
return 0;
}
// Fill new data
int size = m_Width * m_Height;
int BytePerPixel = m_Depth / 8;
ASSERT(size > 0);
for(int i=0;i<size;i++)
{
pData[4*i+0] = m_pData[BytePerPixel*i+0];
pData[4*i+1] = m_pData[BytePerPixel*i+1];
pData[4*i+2] = m_pData[BytePerPixel*i+2];
pData[4*i+3] = alpha;
}
// Set new depth
m_Depth = 32;
// Replace datas
delete [] m_pData;
m_pData = pData;
return 1;
}