渲染反走样点

场景

渲染点的时候,如果尺寸比较大,实际上是一个矩形,需要采用反走样技术。使用反走样要启用混合操作, 确保显卡的反走样设置是用户控制或者打开的。

代码

#include <GL/glut.h>

void myDisplay(void)

{

glClearColor(1.0f, 1.0f, 1.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT);

glEnable(GL_POINT_SMOOTH);

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);

glPointSize(10.0f);

glBegin(GL_POINTS);

glColor3f(0.0, 1.0, 0.0);

glVertex2f(0.0, 0.0);

glEnd();

glFlush();

return;

}

int main(int argc, char *argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

glutInitWindowPosition(100, 100);

glutInitWindowSize(400, 400);

glutCreateWindow("第一个OpenGL程序");

glutDisplayFunc(&myDisplay);

glutMainLoop();

return 0;

}

建议

一般要画效果比较好的圆点,最好是使用纹理。

反走样思路

将相邻阶梯之间的像素颜色设置为过渡色,使之变化柔和,从而物体显得平滑

问题

1)OpenGL中函数glPointSize的参数解释是指定栅格化点的直径

实际上设置为10.0f的情况下,点已经设置为最大值,无法继续扩大

2)glBegin(GL_POINTS);函数的参数值是GL_POINTS,而不是GL_POINT,切记

3)glPointSize(10.0f);函数的调用必须位于glBegin(GL_POINTS)之前

4)glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);函数的第二个参数值指定GL_ONE无效,该值对于直线的交点才有效

5)画线条(即使只画一根线条)时候应该传GL_LINES, 不小心传了GL_LINE,编译也不会报错

,但就是没效果。画点GL_POINTS,四边形GL_QUADS。不小心写了GL_QUAD 编译报错 使用了未定义的枚举变量。GL_LINE,GL_POINT,opengl中用来定义多边形的绘制模式,还有GL_FILL模式。

时间: 2024-10-03 07:04:28

渲染反走样点的相关文章

图形学中的贴图采样、走样与反走样等

计算机图形学中不可避免的会涉及到图像分析与处理的相关知识,前些时间也重温了下常用到的采样.重建以及纹理贴图等内容,并对其中的走样与反走样有了更多的认识,这里小结一下. 1. 基本问题 信号的采样与重建过程中首先面临着两个基本的问题: 给定一个连续的信号g(x)以及它的离散采样信号gs(x),能否通过gs(x)来完整的描述g(x) 的信息: 如果可以,如何通过gs(x)来重建出原始信号g(x). 这些通过对信息进行频域的分析即可得到相应的结论. 2. 采样 将一处于空间域(或时域)内的信号向频域进

NeHe OpenGL教程 第四十六课:全屏反走样

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十六课:全屏反走样 全屏反走样 当今显卡的强大功能,你几乎什么都不用做,只需要在创建窗口的时候该一个数据.看看吧,驱动程序为你做完了一切. 在图形的绘制中,直线的走样是非常影响美观的,我们可以使用反走样解决这个问题.在众多的解决

计算机图形学 彩色直线段的反走样(5)

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/40083207 本文通过一个完整的例子来演示彩色直线段的反走样. 1)创建CP2类 头文件:P2.h // P2.h: interface for the CP2 class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_P2_H__DD23

图形学复习4——光栅化(画线画圆扫描线反走样算法)

图形学复习 CH7 光栅化 前几章介绍了几何处理和裁剪变换,接下来的步骤就是光栅化 光栅化是将形式表示的几何图元转换为阵列表示的数据片元的过程,片元中每一个像素对应帧缓冲区中的每一个像素 7.1 线段生成算法 (1)DDA画线算法 设直线表达式为y=mx+b,输入直线两端点坐标(x0,y0)和(xend,yend),可以计算出m=yend?y0xend?x0和b=y0?m?x0 DAA是基于微分运算的线段生成算法,其主要计算式便是δy=mδx: 若|m|≤1则x方向的变化大于y方向的变化,以x方

计算机图形学 直线反走样Wu算法(4)

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/40048285 本文通过一个完整的实例来演示,直线反走样Wu算法. 1)创建CP2类 头文件:P2.h // P2.h: interface for the CP2 class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_P2_H__DD2

qt反走样(简选)

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #qt反走样(简选) #概念 """ 在光栅图形显示器上绘制非水平.非垂直的直线或多边形边界时,或多或少会呈现锯齿 状外观.这是因为直线和多边形的边界是连续的,而光栅则是由离散的点组成.在光栅显示 设备上表现直线.多边形等,必须在离散位置采样.由于采样不充分重建后造成的信息失真, 就叫走样:用于减少或消除这种效果的技术,就称为反走样 "

Opengl研究4.0 走样与反走样

DionysosLai([email protected]) 2014-06-25 走样与反走样,也叫混淆与反混淆.所谓走样,是由于使用离散量(像素)表示连续量(图形)而引起的失真. 走样现象: 1.      阶梯状的图形边界 如图所示: 由于像素点是一块一块的,存在锯齿状. 2.       图形细节失真 由于显示图形的最小单位为像素,像素是由宽度的.有时候,我们可能显示的线段比像素要窄,要小.那么可能出现两种情况:a. 如果显示的线段宽度比像素宽度小一点,将被保留:b. 如果线段很细,就不

opengl 反走样 混合 多重采样 blend multisample

1. 反走样         在光栅图形显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状或台阶状外观.这是因为直线.多边形.色彩边界等是连续的,而光栅则是由离散的点组成,在光栅显示设备上表现直线.多边形等,必须在离散位置采样.由于采样不充分重建后造成的信息失真,就叫走样(aliasing).而用于减少或消除这种效果的技术,就称为反走样(antialiasing). 2. OpenGL反走样的实现 OpengL中的反走样采用的是融合的技术,来实现点.线和图形的边沿以及雾和颜色和

Qt 学习之路 2(26):反走样

博客转载自:https://www.devbean.net/2012/11/qt-study-road-2-antialiasing/ 我们在光栅图形显示器上绘制非水平.非垂直的直线或多边形边界时,或多或少会呈现锯齿状外观.这是因为直线和多边形的边界是连续的,而光栅则是由离散的点组成.在光栅显示设备上表现直线.多边形等,必须在离散位置采样.由于采样不充分重建后造成的信息失真,就叫走样:用于减少或消除这种效果的技术,就称为反走样. 反走样是图形学中的重要概念,用以防止通常所说的"锯齿"现