Tôi nhận được hình ảnh 2 png, được sử dụng làm hoạ tiết trong ứng dụng OpenGL Qt/C++ 2D. Việc đầu tiên được sử dụng như một loại nền tảng "trung bình" và thứ hai được sử dụng như một "đối tượng" được hiển thị "ontop" (Lưu ý: tất cả chúng đều có cùng giá trị z-atm, tôi nhận được hành vi mong muốn được hiển thị trong một thứ tự xác định). Các "đối tượng" -texture là một phần mờ. Kết cấu "middleground" chủ yếu là rắn. Vấn đề là, phần mờ của kết cấu "đối tượng" của tôi có màu nền đồng nhất và không phải là kết cấu "trung gian".Kết cấu mờ OpenGL trên kết cấu khác
Bất kỳ mẹo nào để đạt được điều này?
Sau falgs OpenGL được sử dụng cho kết cấu của tôi render
glEnable (GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Cảm ơn sự giúp đỡ nào.
Edit:
Nhiều mã:
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.1f);
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBindTexture(GL_TEXTURE_2D, c->_texture);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_QUADS);
{
glTexCoord2i(0,0);
glVertex2i(-128,-128);
glTexCoord2i(0,1);
glVertex2i(-128,128);
glTexCoord2i(1,1);
glVertex2i(128,128);
glTexCoord2i(1,0);
glVertex2i(128,-128);
}
glEnd();
glDisable(GL_TEXTURE_2D);
glDisable(GL_ALPHA_TEST);
glDisable(GL_DEPTH_TEST);
Chỉnh sửa: Làm thế nào tôi tải kết cấu của tôi và như xa như tôi có thể nói nó tải nó với kênh alpha
QImage img("./images/dummycar.png","PNG");
QImage t(QGLWidget::convertToGLFormat(img));
glGenTextures(1, &_texture);
glBindTexture(GL_TEXTURE_2D, _texture);
glTexImage2D(GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
Ảnh chụp màn hình : http://img824.imageshack.us/img824/1912/blackbox.png
Skyimage là "trung tâm" nền màu đen.
Ảnh chụp màn hình có giải thích sẽ đẹp. – SigTerm