我在我正在编写的应用程序中使用此示例项目的XNA 4.0表单控件:http://creators.xna.com/en-US/sample/winforms_series1
如果您不熟悉FXAA,请查看创建者的网站:http: //timothylottes.blogspot.com/2011/03/nvidia-fxaa.html
到目前为止,我花了相当多的时间试图在没有任何运气的情况下使用它(到目前为止......).确实,我对图形编程没有多少经验,但我现在有一个很好的应用程序运行,它看起来真的很糟糕的锯齿线.我知道AA的内置方法,但对我和我的笔记本电脑不起作用.所以我的要求是关于使用FXAA而不是内置方法.
此时:我的Content项目中有FXAA 3.11头文件.我有一个由visual studio生成的通用FX文件,其中包括:
#define FXAA_PC_CONSOLE 1
#define FXAA_HLSL_5 1
#define FXAA_QUALITY__PRESET 12
#include "Includes/Fxaa3_11.h"
Run Code Online (Sandbox Code Playgroud)
我只是在这里询问是否有人可以提供一些XNA 4.0示例,特别是使用该自定义Windows窗体方法.
我感谢有人可能提供的任何帮助.
编辑3: 自从我发布此消息以来,我一直在努力研究如何使FXAA正常工作.我发现了这个: http ://www.gamedev.net/topic/609638-fxaa-help/page__st__20和这个:http: //fxaa-pp-inject.assembla.me/trunk/DirectX9/shader.fx
我将FXAA划分为裸骨FXAA_PC_CONSOLE类型并编译.我只需要找出参数fxaaConsolePosPos,即每个像素的左上角和右下角位置.无论如何,看起来FXAA_PC_CONSOLE可能与shader模型2.0一起使用,我需要使用REACH和winforms基于XNA.
我在我正在编写的应用程序中使用此示例项目的XNA 4.0表单控件:http: //creators.xna.com/en-US/sample/winforms_series1
它工作得很好,我已经完成了很多视觉和动画.我正在摸不着头脑的主要问题是3D模型和原始3D形状(曲面细分为30的圆柱体)我渲染的边缘非常锯齿状,就好像它们是低分辨率一样.
我试图找出如何启用多重采样,但我在网上找到的所有示例似乎都不适用于在自定义表单控件中使用XNA的这种新方法.
在GraphicsDeviceService()构造函数中,创建了一个PresentationParameters对象,但唯一可用的属性是integer.MultiSampleCount类型为integer.我尝试设置它没有任何效果.
我还尝试将后缓冲区设置为控件大小的两倍(GraphicsDeviceService.cs):
GraphicsDeviceService(IntPtr windowHandle, int width, int height)
{
parameters.BackBufferWidth = width * 2;
parameters.BackBufferHeight = height * 2;
...
}
然后我改变了这个函数(GraphicsDeviceControl.cs):
void EndDraw()
{
Rectangle sourceRectangle = new Rectangle(0, 0, ClientSize.Width * 2, ClientSize.Height * 2);
Rectangle destinationRectangle = new Rectangle(0, 0, ClientSize.Width, ClientSize.Height);
GraphicsDevice.Present(sourceRectangle, destinationRectangle, this.Handle);
}
但这没有奏效.渲染到屏幕的对象被降级到窗口的1/4并被剪裁.尽管看起来确实看起来略显锯齿状......
所以在这一点上我不知道如何使用这种方法(窗口中的XNA控件)来获得高质量的图形.我对XNA很新,所以任何建议都会有所帮助.
谢谢