OpenGL简单绘制游戏角色阴影

在游戏开发中很多Q版游戏绘制角色阴影会简单的绘制一个半透明的椭圆,如下图:

这种方法的优点是实现简单,但表现效果明显不够真实。作为Q版风格尚可被玩家接受,而对于写实类游戏,多采用由美术提供针对性制作的图片作为阴影图层。这种方案效果最为理想,缺点是需要多制作大量的图片资源,使游戏包增加不少。

在最近的开发中,我想到了另一种角色阴影图形的绘制方法,这里把它分享给大家。

原理很简单,就是利用OpenGL的图像变形技术,通过把角色自身的图片进行调整,使之变成一个阴影图像。

先上效果图:

具体实现:

OpenGL绘制图片代码

GLfloat textureCoords[8] = {
					exRatio, syRatio,
					sxRatio, syRatio,
					exRatio, eyRatio,
					sxRatio, eyRatio
				};
    glBindTexture(GL_TEXTURE_2D, texId);
    glVertexPointer(2, GL_FLOAT, 0, glVertices);
    glTexCoordPointer(2, GL_FLOAT, 0, textureCoords);
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

数组 textureCoords 即是绘制图像形状的参数,通过改变这些参数使图像沿着Y轴压缩一半,上面两个顶点沿着X轴偏移半个图像的距离,使之呈现上图形状。

但这样还不能完全达到上图效果,因为绘制出来只是形状变化了,图像依然是角色的图像,我们需要把它变成黑色半透明。

这一步只要通过 glColor4f(0.0, 0.0, 0.0, 0.6); 设置就可以了。

最后绘制到角色背后的效果:

时间: 2024-08-09 06:34:26

OpenGL简单绘制游戏角色阴影的相关文章

OpenGL学习-------绘制简单的几何图形

本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同.数学上的点,只有位置,没有大小.但在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点.另一方面,无论图形输出设备(例如,显示器)如何精确,始终不能输出一个无穷小的点.一般情况下,OpenGL中的点将被画成单个的像素(像素的概念,请自己搜索之~),虽然它可能足够小,但并不会是无穷小.同一像素上,Op

MAYA游戏角色头部建模教程

-游戏美术行情在线 在游戏美术中,模型的建立是很重要的,今天卡拉小编与大家分享的是MAYA游戏角色头部建模教程,随着游戏业的迅速发展,游戏画面已经冲破了很多技术上的限制,在众多款ps3,xbox360的游戏中,已经出现了越来越震撼人心的游戏画面.令人震撼的整体效果,无比丰富的细节,加上游戏的互动性,致使越来越多的人对游戏发生了兴趣.越来越多的游戏画面,直逼电影级别的效果,使得很多电影工业的老鸟,也投入游戏的制作中来.下图中就是一个经过zbrush处理过的头部,大约80万polygon.由于游戏中

怎样用HTML5 Canvas制作一个简单的游戏

为了让大家清楚HTML5制作游戏的简单流程,所以先了制作一个非常简单的游戏,来看一看这个过程.   游戏非常简单,无非就是英雄抓住怪物就得分,然后游戏重新开始,怪物出现在地图的随机位置,英雄初始化在地图的中间.点击[这里](../simple_canvas_game-master/index.html "simple_canvas_game"),我们可以直接先玩玩这个游戏 ![simple_game](Figure/1_simple_game.png) ## 1. 创建一个Canvas

A simple libgdx game (一个简单的游戏)

在深入钻研libGDX提供的api之前,让我们创建一个简单的小游戏来初步接触一个每个模块.这里将会主要介绍一些设计思想,而非细节. 我们将会看到如下内容: 1.主要的文件操作 2.清屏 3.绘制图片 4.使用相机 5.主要的输入处理 6.播放声音效果 工程的创建就不在赘述了. The Game (游戏) 游戏的idea很简单: 1.用桶抓住雨滴 2.桶在屏幕的下方 3.雨滴在屏幕的上面随机出现并且垂直下落 4.玩家可以通过鼠标或者触摸或者键盘方向键来水平移动桶 5.游戏没有结束条件... The

Unity3D角色阴影制作

本文将重点介绍两种目前在移动平台上的主流阴影制作技术,同时也会简单介绍两种移动平台上相对较为高级的动态阴影生成方法. 由于目前主流使用Unity3.x在移动平台上并不支持阴影的动态生成技术,所以目前最普遍流行同时性价比也最高的阴影生成方法有以下两种: 1.  简单贴图法 所谓简单贴图法即是直接在角色的角底附加一个阴影半透明贴图,并让其跟随角色一起运动,一般是将该阴影Object成为角色模型的子物体,该种阴影生成效果如下: 阴影的Inspector视图如下: 其中ShadowComponent是控

JavaFX战旗类游戏开发 第三课 创建游戏角色

在上一节课程中,我们学习了在JavaFX中绘制游戏地图.这一节课,我们将会创建我们的游戏角色. 首先,同样的,我们创建一个简单的基类. import javafx.scene.canvas.GraphicsContext; /** * 游戏物体基类 * @author Wing Mei */ public abstract class BaseObject { protected double x, y; protected double width,height; protected bool

CSharpGL(6)在OpenGL中绘制UI元素

CSharpGL(6)在OpenGL中绘制UI元素 主要内容 学习使用IUILayout接口及其机制,以实现在OpenGL中绘制UI元素. 以SimpleUIAxis为例演示如何使用IUILayout. 下载 您可以在(https://github.com/bitzhuwei/CSharpGL)找到最新的源码.欢迎感兴趣的同学fork之. 什么是OpenGL中的UI元素 您可以在源码中找到SimpleUIAxis这一示例. 如上图所示,有5个坐标轴,中间那个是一个普通的三维模型(元素),作为对照

【教程】原创:历上最简单的游戏编程入门教程(基于cocos2d-js)

前言: 大家好.我是一个游戏开发者.曾就职于cocos2d-x这个手机游戏引擎的开发的公司. 在这边我准备了一个最简单的教程,想告诉大家制作一个游戏有多简单. 回忆起当年刚刚步入游戏这个行业,我也抱着非常多的疑问. 所以如果大家对游戏有兴趣的朋友,可以在下面留言. 这个教程我会讲的非常通俗易懂.争取几句话之内就让你看到一个效果. 另外教程里面有丰富的图文讲解.我保证你学完之后掌握了做游戏的真髓. 你完全可以马上开始做自己的游戏.并且能够让你的游戏在网页上,ios,android 还有pc平台上跑

5、使用Libgdx设计一个简单的游戏------雨滴

(原文:http://www.libgdx.cn/topic/49/5-%E4%BD%BF%E7%94%A8libgdx%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E6%B8%B8%E6%88%8F-%E9%9B%A8%E6%BB%B4) 在深入研究Libgdx提供的API之前,我们先来创建一个简单的游戏来感受一下libgdx各个功能.这里将简单的对一些功能做介绍. 使用的技术: 文件访问 清除屏幕 渲染图片 使