Làm thế nào để bạn sử dụng kết cấu với quyền truy cập trạng thái trực tiếp trong OpenGL?
Tôi có mã sau đây, có vẻ như hoạt động:
GLuint textureHandle;
glGenTextures(1, &textureHandle);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureHandle);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, imageW, imageH, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
Tuy nhiên, khi tôi thay thế nó bằng những thứ sau đây sẽ trở thành màu đen:
GLuint textureHandle;
glActiveTexture(GL_TEXTURE0);
glCreateTextures(GL_TEXTURE_2D, 1, &textureHandle);
glTextureImage2DEXT(textureHandle, GL_TEXTURE_2D, 0, GL_RGBA8, imageW, imageH, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data);
glTextureParameteri(textureHandle, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glCreateTextures
là đặc trưng cho chức năng ARB_DSA. Anh ta sử dụng hỗn hợp kỳ lạ của cả hai, có lẽ vì anh ta không thể tìm thấyglTextureImage2D
trong phiên bản ARB (vì ARB muốn ngăn cản kết cấu không thay đổi).