我想简单地使用 SOIL 在 opengl 中插入图像

I want to simply insert an image in opengl using SOIL

提问人:ana12345 提问时间:3/24/2020 更新时间:3/24/2020 访问量:92

问:

这是我正在使用的代码,但它没有加载任何内容: 它应该将青蛙.png加载到窗口上。存在的图像是 cwd。我得到的输出是一个空白屏幕,上面什么都没有。我是否缺少某些功能?

#include <math.h>
#include <GL/glut.h>
#include<stdio.h>
#include<SOIL.h>

void init(void){

        glClearColor(1.0,1.0,1.0,1.0); 
        glMatrixMode(GL_PROJECTION);
        gluOrtho2D(0.0,300.0,0.0,300.0);
    }


void drawPoints(void){

        glClear(GL_COLOR_BUFFER_BIT);
        glColor3f(1,0.4,0.6);//rgb values

       GLuint tex_2d = SOIL_load_OGL_texture
    (
        "frog.png",
        SOIL_LOAD_AUTO,
        SOIL_CREATE_NEW_ID,
        SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
    );

// check for an error during the load process 
if( 0 == tex_2d )
{
    printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
}
        glFlush();
}

int main(int argc, char **argv){

        glutInit(&argc,argv);
        glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
        glutInitWindowPosition(100,100); 
        glutInitWindowSize(100,100); 
        glutCreateWindow("example");
        init();
        glutDisplayFunc(drawPoints);
        glutMainLoop(); 
}
C OpenGL 图形 土壤

评论

1赞 unwind 3/24/2020
作为一个高层次的观察,在绘图函数中执行文件 I/O(每秒可以运行 100+ 次,具体取决于您的窗口环境和硬件)并不是最佳选择。
0赞 Some programmer dude 3/24/2020
要按@unwind跟进评论,无论如何都不需要多次加载纹理。
1赞 Rabbid76 3/24/2020
仅仅加载纹理是不够的。您必须绘制几何图形并将纹理包裹在其上。请参阅 opengl 纹理坐标如何工作?

答: 暂无答案