gpt4 book ai didi

c++ - OpenGl旋转三角形有一些不好的效果

转载 作者:太空狗 更新时间:2023-10-29 21:19:58 25 4
gpt4 key购买 nike

我写了一段代码在屏幕上绘制 10 个黄色三角形并旋转它们以像这样进行动画我将在下面添加 2 个帧:frame 1 frame 2

这一切都很好,但是当我将矩形的数量添加到大约 800 时,我看到了这个:

open gl cannot handle 800 triangles 1 .

如果我有 500 个三角形,我会看到以下问题:

500 triangles problem 1 500 triangles problem 2 500 triangles problem 3 500 triangles problem 4

如您所见,我什至没有那些颜色。 (我只有黑色和黄色的。)实际上,你可以看到任何颜色,这取决于三角形的数量。我认为这是一些 OpenGL 问题。我是 OpenGL 的新手,我想我在 OpenGL 中误用了一些东西。这是代码。它在 cocos2d-x (C++) 中,但你肯定能理解这里做了什么:

Color4F color1e(239.0f / 255, 255.0f / 255, 138.0f / 255, 1);

auto sunNode = DrawNode::create();
sunNode->setContentSize(_size);

int bansCount = 1000;
Vec2 center(_size / 2);

float angleStep = (2 * 3.1415926) / bansCount;

auto rotated = [angleStep, center](float mult) {
Vec2 vc(0, 0);
vc.rotate(center, angleStep * mult);
return vc - center;
};

for(int i = 0; i < bansCount; i+=2) {
sunNode->drawTriangle(
Vec2(0,0), // vertex 1
rotated(i), // vertex 2
rotated(i + 1), // vertex 3
color1e // color of vertices
);
}

addChild(sunNode, 2); // add to sceen
sunNode->setPosition(center); // position on center

// infinitely rotate
sunNode->runAction(RepeatForever::create(RotateBy::create(0.05, 3.1415926 / 10)));

完整代码在这里,以防有人想查看或实验:https://github.com/jonyrock/Cocos2dxDrawingArtifacts

最佳答案

干涉图案是正常的,它的发生是因为边缘被量化(到一个像素或某个子像素的固定值)并且步进创建这些干涉图案的频率比步进频率本身低得多。

颜色不正常,我想到两种可能:

  • 使用非饱和 RGB 颜色和类似“cleartype”的技术,尝试使用单独的子像素引导强度值来提高分辨率(这可能与干涉图案相互作用)

  • 一个错误

如果是第一种情况则使用纯红、纯绿或纯蓝之类的

Color4F color1e(255.0f / 255, 0.0f / 255, 0.0f / 255, 1); // Pure red

不应引入额外的颜色。

关于c++ - OpenGl旋转三角形有一些不好的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25803344/

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