在做了1~3的基础工作后,我们的开发环境基本OK了,我们可以开始尝试利用pyopengl来进行绘制了。本文主要有三个部分利用glfw封装窗口类,并打开窗口;封装shader类,进行编译、链接、使用;封装VAO、VBO、EBO完成主函数进行绘制完整的代码在仓库(tag:v0.1)https://github.com/MangoWAY/CGLearner/tree/v0.11.利用glfw封装窗口类为了显示我们绘制的内容,打开窗口是必不可少的操作,因此我们来简单封装一个窗口类,便于我们后续的学习、调用。我们设置opengl的版本,向前兼容和配置(这俩在macOS必须配置),这些其实可以不用太关心,
在做了1~3的基础工作后,我们的开发环境基本OK了,我们可以开始尝试利用pyopengl来进行绘制了。本文主要有三个部分利用glfw封装窗口类,并打开窗口;封装shader类,进行编译、链接、使用;封装VAO、VBO、EBO完成主函数进行绘制完整的代码在仓库(tag:v0.1)https://github.com/MangoWAY/CGLearner/tree/v0.11.利用glfw封装窗口类为了显示我们绘制的内容,打开窗口是必不可少的操作,因此我们来简单封装一个窗口类,便于我们后续的学习、调用。我们设置opengl的版本,向前兼容和配置(这俩在macOS必须配置),这些其实可以不用太关心,
在此篇中,我们将学习如何绘制一个三角形并对其进行着色,如何判断屏幕中同一个像素位置顶点的前后顺序绘制三角形和平面着色 绘制图形,我们需要画线也就需要学习画线算法,但图形种类多种多样,为什么我们选择学习三角形呢? 因为三角形是最基本的多边形,其拥有许多特性:三角形可以分解其他多边形,也就是我们可以不断分解其他多边形,最终形成有多个三角形组成的多边形三角形保证是平面的三角形可以用叉乘判断内外三角形内部可以定义插值 在讲明为什么我们选择三角形作为最基本的图形后,我们现在来学习如何绘制一个三角形 按照之前的画线算法,我们可以很轻松的画出三角形来,如下图。但问题是我们平时在游戏中看到的丰富多彩的
在此篇中,我们将学习如何绘制一个三角形并对其进行着色,如何判断屏幕中同一个像素位置顶点的前后顺序绘制三角形和平面着色 绘制图形,我们需要画线也就需要学习画线算法,但图形种类多种多样,为什么我们选择学习三角形呢? 因为三角形是最基本的多边形,其拥有许多特性:三角形可以分解其他多边形,也就是我们可以不断分解其他多边形,最终形成有多个三角形组成的多边形三角形保证是平面的三角形可以用叉乘判断内外三角形内部可以定义插值 在讲明为什么我们选择三角形作为最基本的图形后,我们现在来学习如何绘制一个三角形 按照之前的画线算法,我们可以很轻松的画出三角形来,如下图。但问题是我们平时在游戏中看到的丰富多彩的
前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移
前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移
本文将告诉大家如何使用Vortice底层库从零开始,从一个控制台项目,开始搭建一个最简单的使用Direct2D1的DirectX应用。本文属于入门级博客,期望本文能让大家了解Vortice底层库是可以如何调用DirectX的功能,以及了解DirectX中,特别是D2D部分的初始化逻辑在开始聊Vortice之前,必须要先聊聊SharpDx库。众所周知,现在SharpDx已不维护,尽管SharpDx的不维护对咱开发影响很小,除非需要用到这几年新加的功能,否则使用不维护的SharpDx的问题也不大。而Vortice是作为SharpDx的一个代替的存在,是从SharpDx的基础上,继续开发的一个项目。
本文将告诉大家如何使用Vortice底层库从零开始,从一个控制台项目,开始搭建一个最简单的使用Direct2D1的DirectX应用。本文属于入门级博客,期望本文能让大家了解Vortice底层库是可以如何调用DirectX的功能,以及了解DirectX中,特别是D2D部分的初始化逻辑在开始聊Vortice之前,必须要先聊聊SharpDx库。众所周知,现在SharpDx已不维护,尽管SharpDx的不维护对咱开发影响很小,除非需要用到这几年新加的功能,否则使用不维护的SharpDx的问题也不大。而Vortice是作为SharpDx的一个代替的存在,是从SharpDx的基础上,继续开发的一个项目。
这是一个系列博客,最终目的是要做一个基于HTMLCanvas的、类似于微软Office的WebOffice套件(包括:文档、表格、幻灯片……等等)。博客园:《从零开始,开发一个WebOffice套件》系列博客目录富文本编辑器Githubrepo地址:https://github.com/zhaokang555/canvas-text-editor富文本编辑器在线Demo:https://zhaokang555.github.io/canvas-text-editor/2.富文本编辑器(MVP)2.29Feature:拖动控制点,调整编辑器大小2.29.1算法监听控制点的拖动事件,将拖动的距离记
这是一个系列博客,最终目的是要做一个基于HTMLCanvas的、类似于微软Office的WebOffice套件(包括:文档、表格、幻灯片……等等)。博客园:《从零开始,开发一个WebOffice套件》系列博客目录富文本编辑器Githubrepo地址:https://github.com/zhaokang555/canvas-text-editor富文本编辑器在线Demo:https://zhaokang555.github.io/canvas-text-editor/2.富文本编辑器(MVP)2.29Feature:拖动控制点,调整编辑器大小2.29.1算法监听控制点的拖动事件,将拖动的距离记