Я использую цветовую кодировку выбора. Это код, который я использую, чтобы прозрачные области текстурированного четырехугольника не выделялись:
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_TEXTURE_2D);
glEnable(GL_ALPHA_TEST);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glAlphaFunc(GL_GREATER, 0.5f);
glColor3ub(myColor[0], myColor[1], myColor[2]);
drawTexturedQuad();
По сути, я говорю, что хочу, чтобы RGB был таким, каким он был до применения текстуры (это будет myColor), и я хочу, чтобы АЛЬФА была взята из текстуры.
person
ksullivan
schedule
12.02.2011