Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在大型OpenGL屏幕上显示非常小的矩形?_C_Opengl - Fatal编程技术网

C 如何在大型OpenGL屏幕上显示非常小的矩形?

C 如何在大型OpenGL屏幕上显示非常小的矩形?,c,opengl,C,Opengl,我正试图在一个非常大的openGL画布(如500000X500000)上绘制数百万个二维小矩形(如150X150),并带有视口(680X530)。 有没有一种方法可以使这些相对较小的矩形在屏幕上显示得更清晰,而无需放大,这样屏幕一开始看起来就不会是空的 以下是我的绘制和重塑功能: static void draw() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //draw millions of rectangle

我正试图在一个非常大的openGL画布(如500000X500000)上绘制数百万个二维小矩形(如150X150),并带有视口(680X530)。 有没有一种方法可以使这些相对较小的矩形在屏幕上显示得更清晰,而无需放大,这样屏幕一开始看起来就不会是空的

以下是我的绘制和重塑功能:

static void draw() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    //draw millions of rectangles
    glColor3f(0.0f, 1.0f, 0.0f);
    glRectf( 275240.0, 499860.0, 275380.0, 500000.0);
    glFlush();
}

static void reshape() {
    glViewport(0, 0, 680, 530);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D (0.0, 500000.0, 0.0, 500000.0);
}

这里有谁能给我一些建议。

你可以使用几何体着色器


测试四边形区域时,可以应用缩放矩阵,并可能在绘制例程中为每个矩形相应地划分颜色,检查zoomlevel是否低于某个因子


如果是,则绘制尺寸为4的2D点(GL_点),否则(高缩放级别)绘制通常的2D矩形。

嗯,当然,有两种方法可以解决这一问题(最基本的方法是,如果它们真的很远,则将其缩放一点),但考虑到您的矩形类似于1/5像素,不管你怎么做,它都可能看起来一团糟:(我认为你有一个概念上的误解;OpenGL没有任何单位或画布。你可以为你的世界定义一些系统,然后将顶点相应地转换为标准视图体积,以便原语显示在屏幕上。这怎么可能解决矩形几何体大小为像素4%的情况?计算比例在你的几何体着色器中基于眼睛距离调整矩阵可以解决这个问题。如果距离大于阈值,你可以缩放四元体使其大于像素。根据OP,这都是二维的,因此眼睛到对象的距离是事先知道的,所以在几何体着色器中,三元体应该应用于四元体的区域