用相机观察线条 银牌收录

有两种投影方法,一种是平行投影,一种是透视投影。如果是平行投影观察一条线,可以直接把线条的每一个端点的位置求出来,然后判断这条线有没有某一部分出现在屏幕上再画,但是透视投影不能这么轻松地求出端点位置,因为是根据顶点距离相机的 Z 轴上的距离作为除数的,除数不能为 0 但是顶点距离相机的距离可以为 0,还有一种情况是顶点在相机背后,这距离一除朝向直接相反。为了解决这个问题,不能单纯根据顶点投影到摄像机屏幕上的坐标来画线,应该对线进行裁剪得到线在屏幕内的部分

魔尺 银牌收录

魔尺小游戏,鼠标左键拖动能观察各个角度下的魔尺,鼠标左键点击能拧动魔尺块。24块魔尺块,可以拧成一颗球。

魔方 银牌收录

三维魔方,左键拖动能从不同角度观察一个魔方,右键拖动能拧动魔方。拧动的方式有三种,以 x 轴为旋转轴、以 y 轴为旋转轴、以 z 轴为旋转轴。

泡泡龙 银牌收录

泡泡龙,游戏玩法是玩家从下方中央的弹珠发射台射出彩珠,多于3个同色珠相连则会消失,悬空彩珠也会跟随消失。

3D 爱心 银牌收录

李洵爱心代码是去年一个小热门,不少大佬都复现过这个代码。去年我也写了一个,但是效果不尽人意,这次总算实现了还过得去的效果。来年情人节发给爱的人,有什么能比 3D 爱心还浪漫的呢?

[视觉错觉] 隐藏的爱心 铜牌收录

这是一个有趣的视觉错觉程序。在看似整齐的方格图像当中,利用图像的细微差距,使这张图片看上去突出来一颗爱心。但是认真去看这颗心的时候,却难以找到心的边缘。

双边滤波 铜牌收录

将高斯滤波和相似点滤波组合起来就是双边滤波,这些滤波都是为了去除噪点,因为一张图片保存的时候可能会被损坏,出现几个黑点,通过滤波可以让这些点与周围的颜色逐渐接近。

详解透明贴图和三元光栅操作 金牌收录

透明贴图,是指贴图时某些部分是完全透明的或半透明的。

本文介绍多种透明贴图的方案,包括:

  1. 指定透明色贴图(基于 Windows API 函数 TransparentBlt)
  2. 指定透明色贴图(基于直接操作显示缓冲区)
  3. 使用三元光栅操作实现透明贴图
  4. 根据 png 的 alpha 信息实现半透明贴图(基于 Windows API 函数 AlphaBlend)
  5. 根据 png 的 alpha 信息实现半透明贴图(基于直接操作显示缓冲区)

各种方法各有利弊,大家可以根据自己的需求选择。

1. 指定透明色贴图(基于 Windows API 函数 TransparentBlt)

这是最简单的透明贴图方法。

该方法要求图片素材的透明部分为纯色,因此建议使用 gif 或 png 格式的图片素材。如果使用 jpg 格式的图片素材,那么由于 jpg 的有损压缩,会造成边缘颜色有微小差异,与指定的透明色并不完全相同,从而导

...