我试着旋转一个二维像素矩阵,但是什么都没有发生。
我的起源是一个存储的bitmap[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中。
改为使用纹理四边形。这也将适当转变。

10-07 15:21