Java软光栅渲染器-2D直线剪切
目标 实现2D直线的剪切算法(见Line clipping)。 实现 Cohen-Sutherland算法 wiki上列出了很多直线剪切算法,看得有些眼花。我只看了排在第一个的 Cohen-Sutherland 算法。 这种算法把2D空间分成九个区域,画布位于正中。内部(INSIDE)、上(TOP)、下(BOTTOM)、左( ...
目标 实现2D直线的剪切算法(见Line clipping)。 实现 Cohen-Sutherland算法 wiki上列出了很多直线剪切算法,看得有些眼花。我只看了排在第一个的 Cohen-Sutherland 算法。 这种算法把2D空间分成九个区域,画布位于正中。内部(INSIDE)、上(TOP)、下(BOTTOM)、左( ...
目标 光栅化2D直线(布雷森汉姆直线演算法、吴小林直线算法等) 实现 在前面的基础上,实现光栅化2D直线就简单多了,只需要在 ImageRaster 类中增加一个画线方法即可。具体的实现,我先选择布雷森汉姆(Bresenham )直线算法。 网上相关资料非常多,我参考的是这些文章: Bresenham快速画直线算法 从零实现3D图像引擎:(2)画2D直线不简单 ...
目标 光栅化2D点(就是在二维数组上画点,了解色彩的基本原理,并解决图像的输出问题)。 定义颜色(ColorRGBA)类 定义图像(Image)类 创建光栅器,实现在数组上画点。 把图像输出到窗口 实现 定义颜色类 创建ColorRGBA类,用来表达一种颜色。每种颜色有red、green、 ...
目标 创建一个Java工程。 创建主窗口,用于显示画面。 创建一个实时更新的主循环。 计算并显示FPS。 实现 主窗口 在实现渲染器之前,首先要创建一个窗口,解决图像的输出问题。我的选择是把Swing的JFrame作为主窗口,Canvas用来显示图像。 先创建一个Java工程,建立net.jmecn包,然后创建Screen类。 package net.jmecn; ...
开个新坑。 这两天在知乎上搜索关与如何学习图形学的问题,看到了叶神(昵称 Milo Yip)的几个回答: 现阶段应该怎么学习计算机图形学呢? 如何开始用 C++ 写一个光栅化渲染器? 目标 我决定自己动手实现一个Java软光栅渲染器,把整个渲染的过程搞明白。按照叶神的建议,从图形学的历史进程来学习,这样做练习: 2D部分: 光栅化2D点(就是在二维数组上画点, ...