在LWJGL/OpenGL中显示单个像素的优化方法

7xllpg7q  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(157)

我用Java编写了一个简单的光线追踪器,并使用Swing显示单个像素,但Swing降低了应用程序的速度。我试图将其转换为LWJGL(OpenGL for Java),但我不知道是否有效。我读到一个Stack Overflow帖子,说OpenGL没有针对单个像素进行优化,那么我应该使用什么呢?
目前,我有如下内容:

public void render() {
    glBegin(GL_POINTS);
    for (int x = 0; x < width; x ++) {
        for (int y = 0; y < height; y++) {
            Color c = getPixel(x, y);
            glColor3d(c.getR() / 255.0, c.getG() / 255.0, c.getB() / 255.0);
            glVertex2f(x, y);
        }
    }
    glEnd();
}

我只知道OpenGL的基础知识,因为这个用例非常有限。我不确定这是否是最好的方法,或者我是否可以使用像光栅这样的东西来使它更快(性能很关键,因为这至少渲染了一百万像素)。

cl25kdpy

cl25kdpy1#

使用纹理并将数据流传输到纹理并渲染该纹理。尝试一次将尽可能多的像素值传输到纹理(System.arraycopy等)
此外,如果你真的是认真的性能,你需要使用现代OpenGL至少OpenGL版本3.问题是,你的代码不再工作,学习曲线是相当陡峭。

相关问题