gpt4 book ai didi

opengl - 是否可以确保对于远处的物体,OpenGL 中至少渲染 1 个像素?

转载 作者:行者123 更新时间:2023-12-02 02:24:55 26 4
gpt4 key购买 nike

我正在编写一个太阳系模拟,有些物体要么太远,要么太小,甚至无法渲染到单个像素。这种行为是预期的,但它会产生一些工件。对于较小的相机移动,对象会交替渲染为单个像素和根本不渲染,从而产生“闪烁”伪影。

是否可以强制将对象始终渲染到至少 1 像素?或者也许有任何其他技术可以避免这个问题。

调用时问题仍然存在

glDepthFunc(GL_ALWAYS)

最远的物体距相机 4412 个单位,而远平面距相机 10000 个单位。

使用 this answer 中的代码渲染的对象是球体(行星)有 36 个扇区和 36 个环,球体的绘制调用为

glDrawElements(GL_QUADS, m_Indices.size(), GL_UNSIGNED_SHORT, (void *)0)

下面列出了使用的着色器:

顶点着色器

#version 330 core

layout(location = 0) in vec3 in_Position;
layout(location = 1) in vec3 in_Normal;
layout(location = 2) in vec2 in_TexCoord;

uniform mat4 un_mvpMatrix;

out vec2 TexCoord;

void main() {
gl_Position = un_mvpMatrix * vec4(in_Position, 1.0);

TexCoord = in_TexCoord;
}

片段着色器

#version 330 core

in vec2 TexCoord;

uniform sampler2D in_Texture;

out vec4 FragColor;

void main() {
FragColor = texture(in_Texture, TexCoord);
}

最佳答案

在一个 channel 中为每个对象在其中心绘制GL_POINTS,然后在另一 channel 中在顶部绘制 3D 几何图形。这样,即使 3D 几何图形消失,您也将始终掌握要点。

关于opengl - 是否可以确保对于远处的物体,OpenGL 中至少渲染 1 个像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45667594/

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