搜索结果 '显示缓冲区'
通过直接操作显示缓冲区实现高速绘图和特殊效果(如逐渐变亮)
"概述
EasyX 从 2011-2-24 开始,支持了直接操作显示缓冲区的功能。本文介绍一下在 EasyX 中怎样使用“显示缓冲区”。
比如画点,传统的画点函数会受坐标系、缩放、裁剪区等因素影响,导致性能较差。为了实现高速绘图,需要更直接的方法,这就是直接操作显示缓冲区的目的。
理论知识
在 EasyX 中,每个点用 4 个字节表示。对于 640 x 480 的绘图窗口,显示缓冲区的大小为 640 ..."
https://codebus.cn/yangw/high-speed-drawing-with-direct-operation-of-display-buffers
艺术字系列:冰封的 EasyX
这是一个艺术字程序,有一点冰封的效果。程序通过直接操作显示缓冲区,实现了处理速度的提升。程序设置了随机种子,每次执行看到的效果都不完全一样。
https://codebus.cn/yangw/word-art-freeze
EasyX 绘图库实现一个缓冲区半透明绘图
有很多程序需要实现半透明效果,例如磨砂玻璃效果、半透明窗体、示波器透明波段线、透明 GUI、滤镜特效、抗锯齿绘图等等。本文基于 EasyX 绘图库,通过直接操作显示缓冲区,实现高效的半透明绘图。
https://codebus.cn/dingyj/alpha-drawing
烟花
一个基于物理的烟花小程序,考虑了重力。代码基于 c++ 进行编写的,使用 QueryPerformceCount 进行帧率控制。由于在实现烟花小尾巴时候遍历了一遍屏幕上所有的像素点,虽然使用显示缓冲区进行操作,但是这个循环遍历代价还是很大,所以帧率在我的 cpu i7 7700hq 上,以 1920 * 1080 分辨率一直在 35 帧左右,改成 cleardevice 后能变成100多帧,但是小尾巴没了。虽然小尾巴可以画一连串的颜色渐变亮的小圆表示,但是这样表示我看起来没有对屏幕像素取平均效果好。希望有网友能提供更有效、更好的烟花尾巴解决方案。
https://codebus.cn/sunxiaoyu/fireworks
绕线画
绕线画简介
简单点来说,就是在木板上钉一圈钉子,通过绕线进行构图,最终呈现出一幅图像。
算法简介
可以总结概括一下,
首先需要有一张图,可以是彩色的,但是必须颜色比较分明。
对图像进行灰度处理。
随机生成 n 组数,就是每两个钉子的组合。
计算 n 组数据连线所过图像像素的平均数,求出最小的一组。
连接该组钉子,并对这条线经过的像素值分别加 m。
重复前面步骤 3 到步骤 5 直到绘制 z 条线结束循环。
https://codebus.cn/luoyh/symmograph
[译] 短小精悍又不可思议的数学艺术挑战赛及各路大神优秀作品展示
基于整数的数学算法以像素形式显示可以生成惊人的图案,即使是最基本的函数也能产生惊人的巧妙效果!本文翻译了国外 StackExchange 上发起的一个叫做 Tweetable Mathematical Art 的比赛,该比赛以极为精简的 C++ 代码生成各种不可思议的图案。
https://codebus.cn/yangw/tweetable-mathematical-art
详解透明贴图和三元光栅操作
"透明贴图,是指贴图时某些部分是完全透明的或半透明的。
本文介绍多种透明贴图的方案,包括:
指定透明色贴图(基于 Windows API 函数 TransparentBlt)
指定透明色贴图(基于直接操作显示缓冲区)
使用三元光栅操作实现透明贴图
根据 png 的 alpha 信息实现半透明贴图(基于 Windows API 函数 AlphaBlend)
根据 png 的 alpha 信息实现半透 ..."
https://codebus.cn/yangw/transparent-putimage
游戏:矿井逃生
"游戏说明:
矿井里的电路又出问题了。迅速借助你的头灯,在漆黑的矿井里找到出口逃出去吧。
控制说明:
方向键:移动
A/S/D/W:移动
鼠标:控制照射方向
F2:重来一局
ESC:退出游戏
就不放抓图了,有兴趣的运行一下代码看看效果吧,【点这里下载编译后的 exe 文件】。
以下是全部源代码:
////////////////////////////////////////////////// ..."
https://codebus.cn/yangw/escape-from-mine
火焰效果模拟程序
"模拟火焰效果的程序。
执行效果抓图如下:
通过修改色系,本程序可以实现红色火焰、蓝色火焰、绿色火焰三种效果,在 InitFire() 函数中取消相应行注释可以实现不同色系的火焰效果。
完整的源代码如下:
///////////////////////////////////////////////////
// 程序名称:火焰模拟程序
// 编译环境:VC6.0 / VC2010,EasyX_2 ..."
https://codebus.cn/yangw/fire
自由运动的点(全屏模糊处理的范例)
"这是个有趣的程序,同时是一个全屏模糊处理的范例。
其中,点的非直线自由运动的部分,是用的我在高中时候用 QuickBasic 实现的一种简单方法,看到这部分代码有点让人怀念过去。
简单说明一下:
为了使范例更清晰,全屏模糊处理的代码我做了简化,将第一行和最后一行忽略掉了。通过代码可以清晰地看到,所谓全屏模糊,其实就是对每个点与相邻的几个点的颜色做平均处理(可以自己决定每个点的权重)。
这个模糊 ..."
https://codebus.cn/yangw/free-dots
快速画点的原理简述,以及写一个自己的快速画点函数
"EasyX 自带的 putpixel 函数源自 Windows GDI 函数 SetPixel,由于要考虑裁剪区、缩放、原点坐标、坐标方向等等诸多因素,所以性能很低,在一些只要求速度的场合很不实用。这篇文章就教你写一个自己的画点函数。
总的思想,是通过直接操作显示缓冲区来避免额外的运算。
在 EasyX 绘图窗口的显示缓冲区中,每个点占用 4 个字节,用 DWORD 指针指向显示缓冲区就可以像一维 ..."
https://codebus.cn/yangw/fast-putpixel
随机街道闪电效果
"想起之前看的一部鬼片,里面闪电效果和BGM营造了一种阴森恐怖的气氛。所以,突然想试试用简约的风格绘出这样的气氛。
目标:绘画出 简单的随机街道 ,
街道上空出现 各种形态的闪电 ,
并实现街道在闪电时的 闪光变化
效果动态图:
代码如下:
/************************************************************
* 程序名称: 随机街道闪电效果 ..."
https://codebus.cn/featherstar/random-lightning
三维旋转球 源码+注释+简单讲解
"前言
关于三维的东西远不止这么点内容,也不是我几句话可以讲完的,需要大家扎扎实实的看图形学。不能好高骛远,要扎实、系统的学习。还要注意相关数学知识的学习。
图形学一般是借助矩阵实现的各种转换。我在这篇文章里尽量不用图形学的术语,也不做优化、不加额外功能,只用最简单的三角函数实现,希望大家能从道理上看的清楚明白。
简单讲解
关于一个点,一定要有一个三维坐标,程序中的结构体 POINT3D 就是。
点 ..."
https://codebus.cn/bestans/3d-rotating-sphere
[图像处理] 将图片转换为马赛克效果
"这个程序将图片转换为马赛克效果。
算法原理:求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色。依次处理每个小方块,即可实现马赛克效果。
完整代码如下:
/////////////////////////////////////////////////////////
// 程序名称:将图片转换为马赛克效果
// 编译环境:Visual C++ 6.0 / 2010,EasyX_2 ..."
https://codebus.cn/zhaoh/mosaic-filter
[图像处理] 彩色图片转化成底片效果
"这个程序实现将图片转化成底片效果。
底片效果使用如下公式:
R = 0xFF - GetRValue(pMem[i]);
G = 0xFF - GetGValue(pMem[i]);
B = 0xFF - GetBValue(pMem[i]);
完整代码如下:
/////////////////////////////////////////////////////////
// 程序名称:底 ..."
https://codebus.cn/zhaoh/invert-filter