Xcode Opengl正在渲染第一个像素的颜色

Xcode Opengl正在渲染第一个像素的颜色,xcode,macos,opengl,textures,soil,Xcode,Macos,Opengl,Textures,Soil,我正在尝试将我的游戏引擎从win/linux移植到MacOSX,除了纹理之外,其他一切都很好。我用土壤来加载纹理和GLSL着色器渲染,所有的工作都是在C++中完成的。p> 我相信我的着色器工作正常: gl_FragColor=纹理2D(b纹理单位,纹理坐标)*b纹理颜色 以下是我加载纹理的方式: theTextureId = SOIL_load_OGL_texture ( nameChar, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_NT

我正在尝试将我的游戏引擎从win/linux移植到MacOSX,除了纹理之外,其他一切都很好。我用土壤来加载纹理和GLSL着色器渲染,所有的工作都是在C++中完成的。p> 我相信我的着色器工作正常:

gl_FragColor=纹理2D(b纹理单位,纹理坐标)*b纹理颜色

以下是我加载纹理的方式:

theTextureId = SOIL_load_OGL_texture
(
 nameChar,
 SOIL_LOAD_AUTO,
 SOIL_CREATE_NEW_ID,
 SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
 );

glBindTexture(GL_TEXTURE_2D, theTextureId);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

//glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
//glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

if(!theTextureId)
{
    std::cout<<"texture NOT loaded successfully: "<<name<<'\n';
}
其中:GLfloat texTop=1,texBottom=0,texLeft=0,texRight=1;
我还尝试了纹理宽度和高度,而不是0和1,得到了相同的结果。在windows上,它使用此纹理坐标正确渲染。

对我来说似乎是uv问题。尝试打印每个顶点的uv坐标。uv坐标==纹理坐标。顺便说一句,在OpenGL中,这些通常由S、T、R、Q引用
dataToSet[0].texCoord.s = texLeft;
dataToSet[0].texCoord.t = texTop;
dataToSet[1].texCoord.s = texLeft;
dataToSet[1].texCoord.t = texBottom;
dataToSet[2].texCoord.s = texRight;
dataToSet[2].texCoord.t = texBottom;
dataToSet[3].texCoord.s = texRight;
dataToSet[3].texCoord.t = texTop;