renderer_base低级渲染器应用的时机

1 前言

该话题是由于讨论整型和浮点型的线宽之间的差异,从而引出的低级渲染器的出现时机,实际上主要是考虑到性能。

2 翻译

实际上,如果需要渲染1个像素宽度的横线或者竖线,通常和像素对齐,就是占满坐标格子)实际上,如果确定不需要使用AGG的任何转换,最好使用低级的渲染器render_base.

Actually, if you need to draw horizontal and vertical lines of exactly 1 pixel
width, always aligned to pixels (say, coordinate grid), and if you are
absolutely sure you won‘t need to transform them using AGG converters, it‘s
better to use low level renderer_base::copy_hline(), copy_vline(),
blend_hline(), blend_vline(), or, if you need to draw dashed/dotted lines,
blend_solid_hspan(), blend_solid_vspan(). The latest require an array of
"covers", that can be 0 for gaps and 255 for dashes. Intermediate values will
be drawn with respective opacity.
时间: 2024-10-25 00:17:04

renderer_base低级渲染器应用的时机的相关文章

基础渲染器Basic Rnderers

摘自:http://www.cnblogs.com/muxue/archive/2010/06/03/1751094.html 学习经验:很多人在接触新的概念的时候,总会有抵触的情绪,并且由于不了解源码的内部结构而无法了解使用.现在进行简单的分析: 裁剪可能是一个模糊的概念,除非了解图形学,简单来说就是指定一个区域,在这个区域内的任何操作都是有效的,超出限制区域所有的操作都是无效的,最基本的一点就是在渲染像素的时候,先判断该像素是否在指定区域内,发现实际上renderer_base调用的还是像素

基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构

事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒子系统和其他纹理时会得不到想要的结果,渲染器还存在许多的不足: 1.当渲染许多透明图形时,没有对其进行排序,使得本应透明的图形没有透明. 2.不能对不同的顶点使用不同的状态进行渲染. 渲染器要做的东西很简单,就是 1.传递数据到 GPU 2.设置 OpenGL 状态信息(Alpha测试.模板测试.深

上下文渲染器RequestContext

在render_to_response中加RequestContext会将settings中设置的context_processors返回值收集起来传到模板 return render_to_response('index.html', {...}, context_instance=RequestContext(request)) settings.py TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemp

通过渲染器Shader实现图像变换效果

在上一篇文章中,一起学习了通过设定画笔风格来实现图形变换,没读过的朋友可以点击下面链接: http://www.cnblogs.com/fuly550871915/p/4886455.html 是不是觉得自己学到的知识更多了呢?那么再多学一点总没坏处.在本篇文章中,将会一起学习通过给画笔设定Shader属性,实现图形变换.并带领读者一起实现两个实际例子,图片渲染器和线性渲染器.有没有发现我们的画笔特别强大呢??确实,我们曾经给它设置过颜色矩阵属性,设置过xfermode风格属性,现在又来设定Sh

基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer

假如要渲染一个纯色矩形在窗口上,应该怎么做? 先确定顶点的格式,一个顶点应该包含位置信息 vec3 以及颜色信息 vec4,所以顶点的结构体定义可以这样: struct Vertex { Vec3 position; Vec4 color; }; 然后填充矩形四个顶点是数据信息: Vertex* data = ( Vertex* ) malloc(sizeof( Vertex ) * 4); data[0].position.set(0, 0, 0); data[1].position.set(

ZendFramework-2.4 源代码 - 关于MVC - View层 - 视图渲染器、视图插件管理器

<?php // 1. 视图渲染器 class PhpRenderer implements Renderer, TreeRendererInterface { /** * 插件管理器 */ public function getHelperPluginManager() { if (null === $this->__helpers) {// false $this->setHelperPluginManager(new HelperPluginManager()); } return

SDL2源代码分析6:复制到渲染器(SDL_RenderCopy())

上一篇文章分析了SDL更新纹理像素数据的函数SDL_UpdateTexture().这篇文章继续分析SDL的源代码.本文分析SDL纹理复制到渲染目标的函数SDL_RenderCopy(). SDL播放视频的代码流程如下所示.初始化:  SDL_Init(): 初始化SDL. SDL_CreateWindow(): 创建窗口(Window). SDL_CreateRenderer(): 基于窗口创建渲染器(Render). SDL_CreateTexture(): 创建纹理(Texture). 循

[C#]3D渲染器

在学习图形学的过程中,在知乎上看到了几个前辈实现的渲染器,参照<3D游戏编程大师技巧>以及几位韦易笑和李雪峰前辈的代码下,用c#实现了一个版本的软件渲染器. 本博客意在梳理实现过程中所涉及到的知识点.包括: 1.渲染管线 2.数学运算 3. 3D变换 4.纹理双线性过滤采样 5.纹理透视偏差校正 http://blog.csdn.net/popy007/article/details/5570803 仿射 6.CVV裁剪 效果如图: 1.纹理透视映射   2.顶点色 源码 github.com

SDL2源代码分析3:渲染器(SDL_Renderer)

上一篇文章分析了SDL中创建窗口的函数SDL_CreateWindow().这篇文章继续分析SDL的源代码.本文分析SDL的渲染器(SDL_Renderer). SDL播放视频的代码流程如下所示. 初始化:  SDL_Init(): 初始化SDL. SDL_CreateWindow(): 创建窗口(Window). SDL_CreateRenderer(): 基于窗口创建渲染器(Render). SDL_CreateTexture(): 创建纹理(Texture). 循环渲染数据:  SDL_U