gpt4 book ai didi

c++ - 使用 GLX(opengl 和 Xlib)设置图像(jpeg | png)背景

转载 作者:行者123 更新时间:2023-11-28 08:19:29 27 4
gpt4 key购买 nike

我创建了一个具有 opengl 功能的 x11 窗口,我需要在其背景上加载一个图像(jpeg | png),其中窗口的大小大于图像,这无关紧要。我上网是为了获得像使用 DevIL 或免费图像这样的结果。我不知道该用哪一个。我使用 a link to sample code 中给出的示例代码设置了 opengl 窗口我想在 void renderGL() 中编写代码,以便将图像作为背景。你能告诉我使用哪个图像库吗?如果可能的话,请提供代码。

还有如何在 opengl 中绘制彩色像素。我需要一个在窗口中绘制像素的函数,为此我必须单独提供 x、y 像素位置和 rgb 颜色(unsigned int)....

最佳答案

我不是 opengl 程序员,但不知何故我做到了及其工作


ilInit(); /* Initialization of DevIL */
ilGenImages(1, &texid); /* Generation of one image name */
ilBindImage(texid); /* Binding of image name */
success = ilLoadImage(backgroundimage); /* Loading of image "image.jpg" */
iWidth = ilGetInteger(IL_IMAGE_WIDTH);
iHeight = ilGetInteger(IL_IMAGE_HEIGHT);
if (success){
success = ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE); // Convert every colour component into unsigned byte,replace IL_RGB with IL_RGBA for alpha channel
}

glGenTextures(1, &image); /* Texture name generation */
glBindTexture(GL_TEXTURE_2D, image); /* Binding of texture name */
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH),

ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE,
ilGetData()); /* Texture specification */

glRotatef(roll, 0.0f,0.0f, 10.0f);
glOrtho(0.0, float(width), float(height), 0.0, 0.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); // Reset The Modelview Matrix

glBindTexture(GL_TEXTURE_2D, image); // Select The First Image Texture
glBegin(GL_QUADS);// Start Drawing A Textured Quad
glTexCoord2i(0, 0); glVertex2f(width/2-iWidth/2,height/2-iHeight/2);
glTexCoord2i(0, 1); glVertex2f(width/2-iWidth/2,height/2+iHeight/2);
glTexCoord2i(1, 1); glVertex2f(width/2+iWidth/2,height/2+iHeight/2);
glTexCoord2i(1, 0); glVertex2f(width/2+iWidth/2,height/2-iHeight/2);
glEnd();

关于c++ - 使用 GLX(opengl 和 Xlib)设置图像(jpeg | png)背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6434251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com