gpt4 book ai didi

c - openGL 2D像素旋转

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:47 24 4
gpt4 key购买 nike

我正在尝试旋转 2D 像素矩阵,但实际上什么也没有发生。我的来源是一个存储的位图[w x h x 3]。为什么显示的图像没有旋转?这是显示函数:

void display() 
{
uint32_t i = 0,j = 0,k = 0;
unsigned char pixels[WINDOW_WIDTH * WINDOW_HEIGHT * 3];

memset(pixels, 0, sizeof(pixels));
for(j = bitmap_h -1; j > 0; j--) {
for(i = 0; i < bitmap_w; i++) {
pixels[k++]=bitmap[j][i].r;
pixels[k++]=bitmap[j][i].g;
pixels[k++]=bitmap[j][i].b;
}
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glRotatef(90,0,0,1);
glDrawPixels(g_img.descriptor.size_w, g_img.descriptor.size_h, GL_RGB, GL_UNSIGNED_BYTE, &pixels);

glutSwapBuffers();
}

最佳答案

首先,不应使用 glDrawPixels。你遇到的问题是原因之一。 glDrawPixels 操作的复杂规则太多了,无法在这里概述,我们只是说,在您的窗口中有一个所谓的“光栅位置”,glDrawPixels 将在该位置放置它绘制的图像的左下角。不会对图像应用任何变换。

然而,当设置光栅位置时,就是应用转换的时候。并且无论出于何种原因,光栅位置位于可见窗口之外时,根本不会绘制任何内容。

解决方案:不要使用 glDrawPixels。 不要使用 glDrawPixels。 不要使用 glDrawPixels。 我再说一遍不要使用 glDrawPixels。 这是最好的你完全忘记了这个函数实际上存在于遗留的 OpenGL 中。

改用带纹理的四边形。这也将正确转换。

关于c - openGL 2D像素旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31617337/

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