多重采样和超级采样哪个流畅_OpenGL多重采样:结果与未使用多重采样时的结果相同...

在QT框架中使用OpenGL(版本330)多重采样 .

渲染图像就像星形 . 我使用片段着色器在黑色画布上渲染形状强度 . 我不使用OpenGL原语 . 当不使用多重采样时,并且当渲染输出画布具有较小的分辨率(例如400x400像素)时,我可以看到沿着星形边缘的混叠效果 . 如果我增加分辨率,比如1500x1500像素,那么混叠效果就不那么明显了 . 所以我认为mutlisampling应该能够改善结果 .

现在,为了提高速度,我不增加渲染缓冲区的分辨率 . 相反,我决定尝试使用多重采样来减少混叠效果 .

int num_samples = 2; // 4; // I guess the maximum for most graphic cards are 8

GLuint tex;

glGenTextures(1, &tex);

glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, tex);

glTexImage2DMultisample( GL_TEXTURE_2D_MULTISAMPLE, num_samples, GL_R11F_G11F_B10F, width, height, true );

GLuint fbo;

glGenFramebuffers( 1, &fbo );

glBindFramebuffer( GL_FRAMEBUFFER, fbo );

glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, tex, 0 );

glViewport(0,0, width, height);

glEnable(GL_MULTISAMPLE);

// ... some code

// draw a rectangle, as it is 2D image processing

// OpenGL render program release

// now convert multisample frame buffer fbo to a regular frame buffer qopenglFramebufferOjbectP

// qopenglFramebufferOjbectP is QOpenGLFramebufferObject

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);

glBindFramebuffer(GL_DRAW_FRAMEBUFFER, qopenglFramebufferOjbectP->handle());

glBlitFramebuffer(0, 0, width, height, 0, 0, width, height, GL_COLOR_BUFFER_BIT, GL_LINEAR);

整个代码似乎并不完全错误,因为输出是所需的形状,除了抗锯齿效果 . 问题是:我使用多重采样(不同的采样数为2 4或8),或者我不使用多重采样,结果是相同的 . 我特意将结果写入图像,并将它们并排比较 .

但是,如果多重采样生效,则应该预期结果的混叠效果小于不使用多重采样时的结果 .

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值