首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >质量差的纹理stage3D

质量差的纹理stage3D
EN

Stack Overflow用户
提问于 2012-12-08 02:14:43
回答 3查看 841关注 0票数 1

我用stage3D绘制了一个简单的正方形,但是图片中的数字和边缘的质量并不像它应该的那样高:

下面的示例包含了(少量)源代码,我将大部分代码放在了一个文件中。http://users.telenet.be/fusion/SquareQuality/

http://users.telenet.be/fusion/SquareQuality/srcview/

我使用的是mipmapping,在我的着色器中我使用了"<2d,my,repeat>",纹理是256x256jpg(比图像上的要大),也尝试了png,尝试了"mipnearest“,尝试了不使用mipmapping。抗锯齿4,但10或更多根本没有帮助...

有什么想法吗?你好,托马斯

EN

回答 3

Stack Overflow用户

发布于 2012-12-08 02:35:09

您是否正在为backBuffer使用抗锯齿?

代码语言:javascript
复制
// Listen for when the Context3D is created for it
stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContext3DCreated);

function onContext3DCreated(ev:Event): void
{
    var context3D:Context3D = stage3D.context3D;

    // Setup the back buffer for the context
    context3D.configureBackBuffer(stage.stageWidth, stage.stageHeight,
                                  0, // no antialiasing (values 2-16 for antialiasing)
                                  true);
}
票数 2
EN

Stack Overflow用户

发布于 2012-12-08 02:23:53

我认为你的资源纹理大小太高了。GPU在片段着色器中逐个像素渲染场景。渲染纹理的像素时,片段着色器将获得表示纹理UV的变化。GPU只获取纹理的UV坐标上像素的颜色。

现在,当您的纹理大小太高时,您将丢失信息,因为屏幕上的两个相邻像素将对应于纹理资源上的非相邻像素。例如:如果你绘制一个比资源小10倍的纹理,你会得到类似这样的结果(在一维中,每个字符对应一个像素):

代码语言:javascript
复制
Texture:  0123456789ABCDEFGHIJKLM
Screen:   0AK
票数 1
EN

Stack Overflow用户

发布于 2012-12-08 06:16:55

我找到了!

我去了Starling论坛,从Starling的Daniel那里找到了答案:

“如果你使用三线性,你已经使用了最好的质量。你可以尝试的另一件事是将Starling的”抗锯齿“值设置为一个较高的值,例如16,看看这是否有帮助。”

所以我偶然在this上看到一篇文章说,在我的示例程序中,只有当你在片段着色器中放入参数“线性”时,才会使用三线性:

"tex ft0,v0,fs0 <2d,线性,miplinear,repeat>“。

大家好,

托马斯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13768715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档