游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1508|回复: 1

opengl里实现billboard的简单方法

[复制链接]

9

主题

29

帖子

35

积分

注册会员

Rank: 2

积分
35
发表于 2005-8-18 16:20:00 | 显示全部楼层 |阅读模式
opengl里实现billboard的简单方法:


VOID BillBoard()
{
//用来保存一个4*4的矩阵
float m[16];

//取得当前的模型矩阵,并保存到数组m中
glGetFloatv(GL_MODELVIEW_MATRIX,m);

//用m矩阵的部分参数画一个方形平面
glBegin(GL_QUADS);
glVertex3f(-(m[0]+m[1]),-(m[4]+m[5]),-(m[8]+m[9]));
glVertex3f(m[0]-m[1],m[4]-m[5],m[8]-m[9]);
glVertex3f(m[0]+m[1],m[4]+m[5],m[8]+m[9]);
glVertex3f(m[1]-m[0],m[5]-m[4],m[9]-m[8]);
glEnd();
}

在渲染函数里调用BillBoard();当观察方向改变时你会发现
方形平面始终将一面朝向你.为了说明问题已将代码最简化,
要实现其它的功能可在此基础上扩展代码.


44

主题

248

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-8-18 20:50:00 | 显示全部楼层

Re:opengl里实现billboard的简单方法

数目要是一多,glBegin()和glEnd()能保证速度么
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-27 11:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表