【EasyGPU】从零开始的 GPU 编程教程 金牌收录

EasyGPU 是一个轻量无重度三方依赖的即开即用库,允许我们只使用 C++ 就能无缝与 EasyX 进行交互与 GPU 加速编程。本系列文章是其的使用教学。我们将会从零开始,带你一步一步入门 GPU 编程,并且使用 GPU 创造属于你的 EasyX 程序。

【EasyGPU】Lesson 2:渲染我们的第一张图片——绑定纹理与 Profiler API 金牌收录

EasyGPU 是一个轻量无重度三方依赖的即开即用库,允许我们只使用 C++ 就能无缝与 EasyX 进行交互与 GPU 加速编程。本系列文章是其的使用教学。我们将会从零开始,带你一步一步入门 GPU 编程,并且使用 GPU 创造属于你的 EasyX 程序。 本节介绍 EasyGPU 中的 Texture2D 类和 EasyGPU 中的 Kernel Profiler API。

【EasyGPU】Lesson 3:EasyGPU 上的控制流与 Uniform 变量 金牌收录

EasyGPU 是一个轻量无重度三方依赖的即开即用库,允许我们只使用 C++ 就能无缝与 EasyX 进行交互与 GPU 加速编程。本系列文章是其的使用教学。我们将会从零开始,带你一步一步入门 GPU 编程,并且使用 GPU 创造属于你的 EasyX 程序。 本节介绍 EasyGPU 中的控制流与 Uniform 变量

【EasyGPU】Lesson 4:EasyGPU 中的自定义结构体与 Callable 类 金牌收录

EasyGPU 是一个轻量无重度三方依赖的即开即用库,允许我们只使用 C++ 就能无缝与 EasyX 进行交互与 GPU 加速编程。本系列文章是其的使用教学。我们将会从零开始,带你一步一步入门 GPU 编程,并且使用 GPU 创造属于你的 EasyX 程序。 在本章节中,我们将介绍 GPU 上的自定义结构体与 Callable 类,帮助你实现 GPU 逻辑的可复用。

一种高效、简易、高质量的 2D 游戏 PBR 光照实现方法 银牌收录

本文将会介绍一个我正在制作的项目 PaperCraft 中有关游戏 2D 光照的实现。 提供一个低成本的基于有符号距离场可用于实时 2D 光照渲染的可行思路。 本文将会提供一种可能的代码来实现该方法,阐述该方法的优缺点.。 并在本文最后附上 EasyX 实现代码并给出性能测试.

Ray Tracing in One Weekend 汉化 银牌收录

Peter Shirley 教授的 Ray Tracing Weekend 系列书籍一直是我个人十分喜爱的一本入门书籍,在初次阅读完后就萌生了对其进行翻译的想法,鉴于原书是基于 STBImage 的代码,和国内大多使用 EasyX 进行教学的环境有一定出入,因此我对代码进行了一定的“本土化”,并且,我对原著中的图片也重绘翻译,对一些篇章进行了修改,希望可以有利于后来者吧。

[图形学] 画圆(基于 Bresenham 算法) 铜牌收录

图形学中的 Bresenham 画圆算法是基于中点画圆算法的派生,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////
// 程序名称:基于 Bresenham 算法画圆
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作  者:YangW <yw80@qq.com>
// 最后修改:2011-5-3
//
#include <graphics.h>
#include <conio.h>

// 使用 Bresenham 画圆法
void Circle_Bresenham(int x, int y, int r, int color)
{
	int tx = 0, ty = r, d = 3 - 2 * r;

	while( tx <= ty)
	{
		// 利用圆的八分对称性画点
		putpixel(x + tx, y + ty, 
...

[图形学] 画圆(基于中点算法) 铜牌收录

图形学中的中点画圆算法,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////
// 程序名称:基于中点算法画圆
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作  者:YangW <yw80@qq.com>
// 最后修改:2011-4-29
//
#include <graphics.h>
#include <conio.h>

// 中点画圆法
void Circle_Midpoint(int x, int y, int r, int color)
{
	int tx = 0, ty = r, d = 1 - r;

	while(tx <= ty)
	{
		// 利用圆的八分对称性画点
		putpixel(x + tx, y + ty, color);
		putpixel(x + tx, y - ty, color);
		p
...

[图形学] 画任意斜率的直线(基于 DDA 算法) 铜牌收录

图形学中的 DDA (Digital Differential Analyzer) 画直线算法,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////
// 程序名称:基于 DDA 算法画任意斜率的直线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2011-4-26
//
#include <graphics.h>
#include <conio.h>

// 四舍五入
int Round(float x)
{
	return (int)(x < 0 ? x - 0.5 : x + 0.5);
}

// 使用 DDA 算法画任意斜率的直线(包括起始点,不包括终止点)
void Line_DDA(int x1, int y1, int x2, int y2, int co
...

[图形学] 画任意斜率的直线(基于中点算法) 铜牌收录

图形学中的直线的中点算法,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////
// 程序名称:基于中点算法画任意斜率的直线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2011-4-26
//
#include <graphics.h>
#include <conio.h>

// 使用中点算法画任意斜率的直线(包括起始点,不包括终止点)
void Line_Midpoint(int x1, int y1, int x2, int y2, int color)
{
	int x = x1, y = y1;
	int a = y1 - y2, b = x2 - x1;
	int cx = (b >= 0 ? 1 : (b = -b, -1));
	int cy = (a
...

[图形学] 画任意斜率的直线(基于 Bresenham 算法) 铜牌收录

图形学中的 Bresenham 画直线算法,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////
// 程序名称:基于 Bresenham 算法画任意斜率的直线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 作  者:yangw80 <yw80@qq.com>
// 发布日期:2011-4-26
//
#include <graphics.h>
#include <conio.h>

// 使用 Bresenham 算法画任意斜率的直线(包括起始点,不包括终止点)
void Line_Bresenham(int x1, int y1, int x2, int y2, int color)
{
	int x = x1;
	int y = y1;
	int dx = abs(x2 - x1);
	int dy = abs(y2 - y1);
	int
...