改进的z-buffer算法实现 c

一、 实验目的。
改进的z-buffer算法实现。
二、 实验工具
VC6.0
三、 实验步骤
算法思想:先将Z缓冲器中各单元的初始值置为最小值,当要改变某个象素的颜色值时,首先检查当前多边形的深度值是否大于该象素原来的深度值(保存在该象素所对应的Z缓冲器的单元中),如果大于原来的Z值,说明当前多边形更靠近观察点,用它的颜色替换原象素的颜色。

具体实现:
Z-Buffer算法()
{帧缓存全置为背景色
深度缓存全置为最小z值
for(每一个多边形)
{ 扫描转换该多边形
for(该多边形所覆盖的每个象素(x,y) )
{计算该多边形在该象素的深度值Z(x,y);
if(z(x,y)大于z缓存在(x,y)的值)
{把z(x,y)存入z缓存中(x,y)处
把多边形在(x,y)处的颜色值存入帧缓存的(x,y)处
}
}
}
}
只用一个深度缓存变量zb的 改进算法:
Z-Buffer算法()
{ 帧缓存全置为背景色
for(屏幕上的每个象素(i,j))
{ 深度缓存变量zb置最小值MinValue
for(多面体上的每个多边形Pk)
{
if(象素点(i,j)在pk的投影多边形之内)
{
计算Pk在(i,j)处的深度值depth;
if(depth大于zb)
{ zb = depth;
indexp = k;(记录多边形的序号)
}
}
}
If(zb != MinValue) 计算多边形P 在交点 (I,j) 处的光照颜色并显示
}
}

代码如下:

#include "stdio.h"
//两个多边形进行算法验证

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <graphics.h>
#include <math.h>
#define PI 3.1415926535
#define x0 500
#define y0 500  //画面的大小
   
void z_Buffer(int x1,int x2,int y1,int y2, int x11,int x22,int y11,int y22){
    //定义z_Buffer算法

	int a=3,b=3,c
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值