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

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

不知道OpenGL里面怎么设置?

最好是直接调用OpelGL函数。

谢谢
...全文
788 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
  • 打赏
  • 举报
回复
有没有哪位帮忙解答一下啊?
打开链接下载源码: https://pan.quark.cn/s/589796089f72 C++课程设计任务列表,涵盖以下内容:1、识别并显示10至99范围内,各位数乘积超过各位数和的数值,例如数字12不满足条件,因为1乘以2小于1加2,故不输出;而数字27满足条件,因为2乘以7大于2加7,因此需要输出该数。2、开发一个功能,用于从用户输入的任意数量实数中找出最大值与最小值:首先要求用户输入一个正整数n,代表数值的个数,随后用户可输入任意n个实数,程序需找出这n个数中的最大值和最小值并将它们展示出来。3、实现两个已排序数组的合并操作:设有数组A和B,且假设这两个数组的元素均已按照降序排列。编写程序将A和B合并成一个新的数组C,并确保C中的元素同样保持降序排列。int A[10]={123, 86,80, 49,33,15,7,0,-1,-3};int B[10]={100,64,51,50,27,19,15,12,5,2};4、设计一个函数,用于计算特定分数序列前n项的总和,该序列为1/2,1/3,1/4,1/5,1/6,1/7,...。要求在主程序中提示用户输入一个整数n,并验证输入的合法性(n需大于1方为有效),若输入合法,则调用求和函数并显示计算结果。5、编写一个程序,计算两个用户输入日期之间的天数差:用户需以year1,month1,day1和year2,month2,day2的格式输入两个日期,程序随后计算这两个日期之间的天数间隔,并将结果输出到屏幕上。要求编制具有如下原型的函数difs2Date:long GetDayDifference(int y1,int m1,int d1,int y2,int m2,int d2);并在主函数中调用此函数,将计...

8,324

社区成员

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

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