自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 使用C++实现OpenGL软光栅(10)-视图变换与投影变换代码实现

还是一样直接贴代码,具体的理论知识篇幅有限就不赘述,也比较简单都是基础。

2025-02-28 14:43:36 207

原创 使用C++实现OpenGL软光栅(9)-矩阵代码实现

这里只写出矩阵的代码实现,具体的类似矩阵的概念这些理论知识可以自行回顾~4x4的矩阵代码和这个基本相同,这里就不再赘述。先取出每一列,乘上之后再构造成一个新矩阵。

2025-02-25 16:43:25 202

原创 使用C++实现OpenGL软光栅(8)-图片的双线性插值算法与纹理wrap方式实现

在做纹理贴图的时候,经常会遇到这种情况:比如图片的比例是200250,但是需要绘制的矩形比例是400500,大于图片比例这就是常说的过采样(Over-Sampling),即需要的数据比源头数据要多这种情况怎么办呢?多个屏幕像素点就都只能用同一个图片像素进行上色,就会形成像素风的风格源头数据过少的情况下,出现的图像就更加颗粒感和粗糙该怎么办呢?

2025-02-19 16:24:39 328

原创 使用C++实现OpenGL软光栅(7)-三角形贴图

上篇文章我们已经知道了如何画一个三角形,现在就学习如果在这个三角形上贴个图预期效果如图:原理其实说来也简单。

2025-01-10 16:55:38 174

原创 使用C++实现OpenGL软光栅(6)-画个三角形

前面学习了画点,画线,现在更进一步,画个三角形出来三角形其实就是三条线相交以及他们包裹的部分,对应了三个顶点。

2025-01-10 15:26:05 191

原创 使用C++实现OpenGL软光栅(5)-图片加载与颜色混合

这样在走到上面加了颜色混合后的DrawPoint时,如果有像素重合,就会根据传入的alpha值与255的比例作为权重进行绘制,达到颜色汇合的目的。由于stb_image最后返回的是一串字节bits(毕竟图片说白了就是位置信息+颜色信息),所以这里创建一个image类。接下来画图片的过程中,其实就是把image里面的mData离散成一个一个点画在屏幕上。如果在外部开启了颜色混合,则根据来源图片的alpha值的比例作为权重系数。直接就返回一个image对象,非常简单。然后在加载图片的时候,添加透明度的选项。

2024-12-29 17:58:08 204

原创 使用C++实现OpenGL软光栅(4)-三角形扫描算法

这个问题换在电脑上就是给出三个坐标,返回这三个坐标所包围的三角形的像素集合。给出屏幕上三个点,如何画出一个三角形呢?

2024-12-29 11:37:21 116

原创 使用C++实现OpenGL软光栅(3)-Brensenham直线算法

如果p小于0,则x步进1,y不变,y2 = y1 ,所以p2 = p1 + 2德塔y,所以在上面p大于0的时候需要多减2个德塔x的目的就在这。知道第一个点,先画第二个点,如果p大于0,则x步进1,y+1,则时p2 = p1 + 2德塔y - 2德塔x。但是这里面全是浮点数计算,更别说还有浮点数乘除,消耗太高,很不推荐。通过一系列枯燥的计算我们终于得到的结论,也就是上图中的代码。首先考虑特殊情况,然后将其他情况想办法转到该特殊情况即可。特殊情况就是最简单的,第一象限,且斜率在0到1之间。

2024-12-28 17:05:22 228

原创 使用C++实现OpenGL软光栅(2)-模拟GPU

而双缓冲绘图机制就更简单,不可能让用户看到绘图过程对吧,得直接让他们看到一整张图,所以就创建另一个HDC(简称HDC2),现在HDC2上一个像素一个像素地画图,然后直接全部复制到HDC1上,这样在用户看来就是一整张图同时被画好。而一个屏幕上肯定不止一个HDC,只要有窗口弹出来,系统就会为其分配一个虚拟的HDC,也就对应了一个独特的虚拟设备。handle of DC,也就是上面说的HDC,就是DC的句柄,表示当前显示设备的描述,比如长宽,像素格式等等。现在要更进一步,添加一个模拟GPU进行实际绘制。

2024-12-28 16:18:26 527

原创 使用C++实现OpenGL软光栅(1)-Windows绘制逻辑解析

一个最简单的windows窗体构建逻辑很简单,循环,事件,注册,生成,就这么几步即可,大部分都是调用windows的底层API。

2024-12-28 14:28:55 495

原创 猫课 MyFirstLight学习笔记

这样旋转物体 法线方向会随着物体的位置发生移动,原因是动态批处理需要从对象空间变换到世界空间,并且还要进行额外的排序,这些操作会影响到对象空间法线的方向。

2024-12-21 09:16:18 217

原创 屏幕后处理:变黑白

【代码】屏幕后处理:变黑白。

2023-06-15 07:53:50 19

原创 Shader练习:水面效果

【代码】Shader练习:水面效果。

2023-06-14 08:09:25 21

原创 Shader练习:毛玻璃

需要添加自身纹理图和噪点图。

2023-06-14 07:57:56 19

原创 Shader练习:透视

【代码】Shader练习:透视。

2023-06-14 07:54:40 15

原创 Shader练习:卡通渲染

【代码】Shader练习:卡通渲染。

2023-06-14 07:21:00 16

原创 Shader练习:描边

【代码】Shader练习:描边。

2023-06-07 22:33:16 9

原创 Shader练习:雪中人

【代码】Shader练习:雪中人。

2023-06-07 22:32:39 15

原创 LightMapping实战

确保Room和Monkey在场景中都是static对象,否则不能烘培如果美工建立的模型顶点不带UV通道数据,则需要勾选模型的生成UV数据选项,否则不能为每个对象单独生成光照贴图坐标信息monkey和room都是blend对象。

2023-06-02 08:33:56 17

原创 CG1-屏幕上绘制三角形

3.确定绘制line的shader代码。1.确定三种变换的代码。

2023-05-31 07:38:41 11

转载 unity UI性能优化

Unity UI性能优化

2023-02-22 11:58:54 154

原创 10.27Unity事件、场景烘焙、Render Texture

1.Unity的几种事件用法①eventusing System.Collections;using System.Collections.Generic;using UnityEngine;using System;using UnityEngine.UI;using UnityEngine.Events;public class CollisinEvent : UnityEvent<GameObject, GameObject> { }public class H

2021-10-28 09:28:40 2062

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除