我正在尝试使用SDL2为Wavefront Objects的OpenGL渲染加载纹理(目前我正在使用固定管道进行测试,但我最终计划移动到着色器).问题是应用于四边形的加载纹理(以及使用纹理右下角的一小部分的模型)如下所示:
效果样本http://image-upload.de/image/daKaEf/e433b140c9.png 这是我用过的纹理
使用SDL函数绘制时,图像加载正常并且看起来完全正常,因此可能是转换为已损坏的OGL纹理.请注意,我启用了alpha混合,纹理仍然完全不透明 - 因此值不是完全随机的,可能不是未初始化的内存.这是我转换表面的代码(从这里的各种教程和问题拼凑而成):
GLuint glMakeTexture(bool mipmap = false, int request_size = 0) { // Only works on 32 Bit Surfaces
GLuint texture = 0;
if ((bool)_surface) {
int w,h;
if (request_size) { // NPOT and rectangular textures are widely supported since at least a decade now; you should never need this...
w = h = request_size;
if (w<_surface->w || h<_surface->h) return 0; // No can do.
} else {
w = _surface->w;
h = _surface->h;
} …Run Code Online (Sandbox Code Playgroud)