使用 SOIL 加载 jpeg 图像时 OpenGL 处理缓慢
OpenGL slow processing while loading a jpeg image using SOIL
我正在做一个项目,用 jpeg 图像和一些键盘导航键为球体添加纹理,以便用户向右或向左旋转球体。问题是我尝试使用 SOIL 加载图像并且它已成功加载,但问题是球体旋转的处理速度很慢......任何帮助!
这就是我在主方法中调用一次的 seoarate 方法中加载 jpeg 图像的方式
void loadtexture()
{
tex_2d[0] = SOIL_load_OGL_texture(
"filename",
SOIL_LOAD_AUTO,SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS);
printf( "Image loaded successfully.. ");
if(tex_2d[0]==0 ) {
printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
}
glBindTexture(GL_TEXTURE_2D, tex_2d[0]);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);//GL_NEAREST
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
}
这就是我创建球体并将纹理应用到它的方式
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex_2d[0]);
GLUquadricObj* esphere2 = gluNewQuadric();
gluQuadricTexture(esphere2, true);
gluQuadricNormals(esphere2, GLU_SMOOTH);
glEnable(GL_CULL_FACE);
gluSphere(esphere2, 4, 50, 50);
gluDeleteQuadric(esphere2);
The problem is i tried using SOIL to load the image and it was successfully loaded, but the probelm is the slow processing for the sphere rotation
这看起来好像您正在为每一帧绘制重新加载纹理。你为什么要这样做?只需加载一次纹理即可完成。
我正在做一个项目,用 jpeg 图像和一些键盘导航键为球体添加纹理,以便用户向右或向左旋转球体。问题是我尝试使用 SOIL 加载图像并且它已成功加载,但问题是球体旋转的处理速度很慢......任何帮助!
这就是我在主方法中调用一次的 seoarate 方法中加载 jpeg 图像的方式
void loadtexture()
{
tex_2d[0] = SOIL_load_OGL_texture(
"filename",
SOIL_LOAD_AUTO,SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS);
printf( "Image loaded successfully.. ");
if(tex_2d[0]==0 ) {
printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
}
glBindTexture(GL_TEXTURE_2D, tex_2d[0]);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);//GL_NEAREST
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
}
这就是我创建球体并将纹理应用到它的方式
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex_2d[0]);
GLUquadricObj* esphere2 = gluNewQuadric();
gluQuadricTexture(esphere2, true);
gluQuadricNormals(esphere2, GLU_SMOOTH);
glEnable(GL_CULL_FACE);
gluSphere(esphere2, 4, 50, 50);
gluDeleteQuadric(esphere2);
The problem is i tried using SOIL to load the image and it was successfully loaded, but the probelm is the slow processing for the sphere rotation
这看起来好像您正在为每一帧绘制重新加载纹理。你为什么要这样做?只需加载一次纹理即可完成。