请问OpenGL怎么在程序里面设置几倍抗锯齿?

cpio 2009-05-22 08:47:54
很多游戏画面设置里面可以设置 无、2x,4x,8x等抗锯齿选项。

不知道OpenGL里面怎么设置?

最好是直接调用OpelGL函数。

谢谢
...全文
674 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpio 2009-05-31
  • 打赏
  • 举报
回复
网上找了个帖子:

wglGetProcAddress获取的是函数指针,而GL_ARB_multisample是多重采样支持,根本不是个函数,当然返回空了。既然支持GL_ARB_multisample了,要采用它可以先获得wglChoosePixelFormatARB函数指针,然后在这个函数的第二个参数的数组列表中指定WGL_SAMPLES_ARB是2、4、8或16倍反走样。
PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB =
reinterpret_cast< PFNWGLCHOOSEPIXELFORMATARBPROC>( ::wglGetProcAddress( "wglChoosePixelFormatARB") );
if( wglChoosePixelFormatARB)
{
float fAttributes[] = { 0, 0 };
int iPixelFormat( 0), iResult( 0);
unsigned int uiNumFormats( 0);
int iAttributes[] =
{
WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
WGL_SAMPLE_BUFFERS_EXT, GL_TRUE,
WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB,
WGL_COLOR_BITS_ARB, 24,
WGL_ALPHA_BITS_ARB, 8,
WGL_DEPTH_BITS_ARB, 24,
WGL_STENCIL_BITS_ARB, 0,
WGL_SAMPLES_ARB, 8, 0
};
iResult = wglChoosePixelFormatARB( hDC, iAttributes, fAttributes, 1, &iPixelFormat, &uiNumFormats);
if( ( iResult && uiNumFormats >= 1) )
{
SetPixelFormat( hDC, iPixelFormat, &csPFD);
hRC = ::wglCreateContext( m_hDC);
wglMakeCurrent( hDC, hRC);
}// if
}
cpio 2009-05-31
  • 打赏
  • 举报
回复

好像光使用
wglChoosePixelFormatARB
是不行的

我看NEHE教程里面创建了2次窗口

而我不是使用那种方式创建的窗口,是使用一个跨平台的库,那个库创建窗口。

实在不行只能在显卡控制面板里面设置了
zwqxin 2009-05-29
  • 打赏
  • 举报
回复
WGL – 针对Windows平台的扩展
wglChoosePixelFormatARB是获取显卡所支持的,能满足所设定采样参数的像素格式吧
cpio 2009-05-29
  • 打赏
  • 举报
回复
先把帖子结了吧,wgl不是Windows下的吗?
cpio 2009-05-27
  • 打赏
  • 举报
回复
谢谢二楼


关键是我在代码里面调用glHint了等函数,传如GL_POINT_SMOOTH_HINT,GL_LINE_SMOOTH_HINT,GL_POLYGON_SMOOTH_HINT之类参数

最后画面也很粗糙

于是我在显卡控制面板里面设置,把anti-aliasing选项由原来的use application setting改为4X(可能是公司电脑显卡不好,最高只有4X)

这样再运行我的程序,画面就不粗糙,而是变得很精细了。

我就想怎么在程序里面实现这个。
alibabademama 2009-05-27
  • 打赏
  • 举报
回复
同意二楼的













--------------完美的签名线-----------------
网页游戏开发第一站 http://dev.web863.com
zwqxin 2009-05-27
  • 打赏
  • 举报
回复
呃,原来还有这种扩展.....支持楼上,学到东西了

程序DEMO是 NEHE的46课,楼主可以把例子下下来看看了
wglChoosePixelFormatARB第二个参数,那个INT数组的第18个索引的值是WGL_SAMPLES_ARB,第19个索引的值看来就是楼主想要那些4x,8x的东西了
aaaa3105563 2009-05-26
  • 打赏
  • 举报
回复
帮顶··
zwqxin 2009-05-26
  • 打赏
  • 举报
回复
不太清楚.
但是我一直认为这些所谓抗锯齿,就是在shader里面做PCF(百分比渐进过滤)....
2x,4x等就是反走样系数(类似模板系数)

至于OPENGL画点,直线之类做抗锯齿是启用混合后,调用glHint等函数,传如GL_POINT_SMOOTH_HINT,GL_LINE_SMOOTH_HINT,GL_POLYGON_SMOOTH_HINT之类参数,没什么2x,4x之类的东西
cpio 2009-05-25
  • 打赏
  • 举报
回复
有没有哪位帮忙解答一下啊?

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧