//++++++++++++++++++++++++++++++++
//Author: 贾胜华(JiaShengHua)
//Version: 1.0.0
//Date: 2011.12.10
//--------------------------------
#include "XGun.h"
#include "XResourcePack.h"
namespace XE{
XMusicHandle BGMusicHandle[6]; //声音的句柄
//XMusic BGmusic; //播放背景音乐的类
#define GOLD_FLY_ARM_X (98)
#define GOLD_FLY_ARM_Y (150)
#define DEBUG00 (0)
#if USE_FBO
#if USE_SHADER
int m_shaderHandle; //shader的句柄
int textureHandle; //shader中贴图的句柄
void useShader() //具体使用shader的函数
{
glUseProgram(m_shaderHandle);
static char flag = 0;
if(0 == flag)
{
//设置shader的参数
textureHandle = glGetUniformLocation(m_shaderHandle, "Texture");
glUniform1i(textureHandle,0);
flag = 1;
}
}
void XGun::initShaderFromText() //从文件中初始化sheder的代码
{
setShader("ClearAlpha.vrt", "ClearAlpha.frg",m_shaderHandle,m_resoursePosition);
// setShader("ClearAlpha.vrt", "ClearAlpha.frg",m_shaderHandle,0);
}
#endif
#endif
int XGun::init(XGemMatrix *gems,XResPos resoursePosition)
{
if(m_isInited != 0) return 1;
if(gems == NULL) return 0;
m_gems = gems;
m_resoursePosition = resoursePosition;
if(m_cameraLogo.init("ResourcePack/pic/UI/camera.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_cameraLogo.setPosition(1200.0f,638.0f);
m_cameraLogo.setAngle(90);
if(m_cameraNotSupply.init("ResourcePack/pic/UI/notsupply.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_cameraNotSupply.setPosition(1200.0f,638.0f);
m_cameraNotSupply.setAngle(90);
m_cameraNotSupply.setAlpha(0.0f);
m_notSupplyAlpha = 0.0f;
XPixelsInputInfo tmp;
tmp.setNormal(CAMERA_WIDTH, CAMERA_HIGHT);
tmp.withDefaultFormat = false;
if(!m_camera.init(tmp))
{
m_isCameraSupply = 0;
}else
{
m_isCameraSupply = 1;
if(m_camera.getBuffSize() != MAX_GAME_ORDER_CAMERA_DATA)
{
#if DEBUG00
printf("The texture size of camera inited is different from default!\n");
#endif
return 0;
}
}
m_camera.m_pixelsSprite.setAngle(90);
m_camera.m_pixelsSprite.setPosition(388,240);
m_camera.setStop();
if(m_takePhotoAttention.init("ResourcePack/pic/UI/takePhotoTitle.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_takePhotoAttention.setPosition(290,290);
m_takePhotoAttention.setAngle(90);
if(m_cameraBG.init("ResourcePack/pic/UI/cameraBG.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_cameraBG.setPosition(388 - 96,240 - 136);
m_cameraBG.setAngle(90);
if(m_takePhotoTex00.init("ResourcePack/pic/UI/TakePhoto00.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_takePhotoTex00.setPosition(388 + 96,240 + 56);
m_takePhotoTex00.setAngle(90);
if(m_takePhotoTex01.init("ResourcePack/pic/UI/TakePhoto01.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_takePhotoTex01.setPosition(388 + 96,240 + 56);
m_takePhotoTex01.setAngle(90);
if(m_takePhotoTex02.init("ResourcePack/pic/UI/TakePhoto02.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_takePhotoTex02.setPosition(388 + 96,240 + 56);
m_takePhotoTex02.setAngle(90);
if(m_takePhotoTex03.init("ResourcePack/pic/UI/TakePhoto03.png",m_resoursePosition) == 0) return 0; //初始化摄像头的背景
m_takePhotoTex03.setPosition(388 - 96,240 - 8);
m_takePhotoTex03.setAngle(90);
// if(m_cameraHead.init(CAMERA_WIDTH,CAMERA_HIGHT,0) == 0) return 0;
if(m_cameraHead.init(CAMERA_WIDTH,CAMERA_HIGHT) == 0) return 0;
m_cameraHead.setAngle(90);
m_cameraHead.setScale(0.3f,0.3f);
try
{
m_gameOrderCameraData = new unsigned char[MAX_GAME_ORDER_CAMERA_DATA * MAX_GAME_ORDER_SUM];
if(m_gameOrderCameraData == NULL) return 0;
}catch(...)
{
return 0;
}
for(int i = 0;i < MAX_GAME_ORDER_SUM;++ i)
{
glGenTextures(1,&(m_cameraRecordTex[i]));
glBindTexture(GL_TEXTURE_2D, m_cameraRecordTex[i]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, CAMERA_TEX_WIDTH, CAMERA_TEX_HIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
}
for(int i = 0;i < 4;++ i)
{
if(m_userHeadSprite[i].init(CAMERA_WIDTH,CAMERA_HIGHT) == 0) return 0;
m_userHeadSprite[i].setAngle(90);
m_userHeadSprite[i].setScale(0.5f,0.5f);
}
m_nowUserHeadOrder = 0;
m_nowUserHeadData = 0;
try
{
m_gameOrderUserHeadData = new unsigned char[MAX_GAME_ORDER_CAMERA_DATA * USER_HEAD_SUM];
if(m_gameOrderUserHeadData == NULL) return 0;
}catch(...)
{
return 0;
}
for(int i = 0;i < USER_HEAD_SUM;++ i)
{
glGenTextures(1,&(m_userHeadTex[i]));
glBindTexture(GL_TEXTURE_2D, m_userHeadTex[i]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, CAMERA_TEX_WIDTH, CAMERA_TEX_HIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
}
// initConfigData();
// initRecordData();
// initRecordData();
if(readRecordData() == 0)
{
initConfigData();
initRecordData();
initRecordData();
if(readRecordData() == 0)
{
return 0;
}
}
// initHeadData();
// initHeadData();
if(readHeadData() == 0)
{
initHeadData();
initHeadData();
if(readHeadData() == 0)
{
return 0;
}
}
if(m_isCameraSupply == 0)
{
initHeadData(1);
}
try
{
m_cameraTexData = new unsigned char[CAMERA_TEX_WIDTH * CAMERA_TEX_HIGHT * 3];
if(m_cameraTexData == NULL) return 0;
}catch(...)
{
return 0;
}
memset(m_cameraTexData,0,CAMERA_TEX_WIDTH * CAMERA_TEX_HIGHT * 3);
//注意!注意!去掉这个之后会在目标机器上面造成贴图问题,暂时原因尚不明确,不是2的n次方的问题,可能与目标机器的驱动相关
for(int i = 0;i < MAX_GAME_ORDER_SUM;++ i)
{
updataHeadTex(i);
}
// initUserData();
// initUserData();
if(readUserData() == 0)
{
initUserData();
initUserData();
if(readUserData() == 0)
{
return 0;
}
}
for(int i = 0;i < USER_HEAD_SUM;++ i)
{
updataUserHeadTex(i);
}
for(int i = 0;i < MAX_GAME_ORDER_SUM;++ i)
{
updataHeadTex(i);
}
XSoundPlayer.setAllVolume(m_configData.volume * 10.0f / 100.0f * 128);
m_BGPicOrder = 0;
//if(m_backGround_00.init("ResourcePack/normalResource/BG_00.jpg",resoursePosition) == 0) return 0;
if(m_backGround_00.init("ResourcePack/pic/BG_00.png",resoursePosition) == 0) return 0;
m_backGround_00.setPosition(0.0f,0.0f);
//if(m_backGround_01.init("ResourcePack/normalResource/BG_01.jpg",resoursePosition) == 0) return 0;
if(m_backGround_01.init("ResourcePack/pic/BG_01.png",resoursePosition) == 0) return 0;
m_backGround_01.setPosition(0.0f,0.0f);
//if(m_backGround_02.init("ResourcePack/normalResource/BG_02.jpg",resoursePosition) == 0) return 0;
if(m_backGround_02.init("ResourcePack/pic/BG_02.png",resoursePosition) == 0) return 0;
m_backGround_02.setPosition(0.0f,0.0f);
//if(m_backGround_03.init("ResourcePack/normalResource/BG_03.jpg",resoursePosition) == 0) return 0;
if(m_backGround_03.init("ResourcePack/pic/BG_03.png",resoursePosition) == 0) return 0;
m_backGround_03.setPosition(0.0f,0.0f);
//if(m_backGround_04.init("ResourcePack/normalResource/BG_04.jpg",resoursePosition) == 0) return 0;
if(m_backGround_04.init("ResourcePack/pic/BG_04.png",resoursePosition) == 0) return 0;
m_backGround_04.setPosition(0.0f,0.0f);
if(m_star[0].init("ResourcePack/pic/star/Space_M0.png",resoursePosition) == 0) return 0;
m_starSpeed[0].set(0.001f,0.01f);
if(m_star[1].init("ResourcePack/pic/star/Space_M5.png",resoursePosition) == 0) return 0;
m_starSpeed[1].set(0.001f,0.01f);
if(m_star[2].init("ResourcePack/pic/star/Space_M2.png",resoursePosition) == 0) return 0;
m_starSpeed[2].set(0.001f,0.01f);
if(m_star[3].init("ResourcePack/pic/star/Space_M3.png",resoursePosition) == 0) return 0;
m_starSpeed[3].set(0.001f,0.01f);
if(m_star[4].init("ResourcePack/pic/star/Space_M6.png",resoursePosition) == 0) return 0;
m_starSpeed[4].set(0.001f,0.01f);
if(m_star[5].init("ResourcePack/pic/star/Space_M1.png",resoursePosition) == 0) return 0;
m_starSpeed[5].set(0.001f,0.01f);
if(m_star[6].init("ResourcePack/pic/star/Space_M4.png",re
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
opengl OpenGL(Open Graphics Library)是一个跨平台、跨语言的图形编程接口(API)。它被广泛用于实现2D和3D图形渲染,并且是许多应用程序、游戏和网页浏览器的核心组件。 以下是对 OpenGL 的一些主要特性的概述: 1. 低层次的渲染 API:OpenGL 提供了直接与图形硬件进行交互的能力。这使得它非常强大,因为它可以充分利用图形处理器(GPU)的性能。然而,这也意味着使用 OpenGL 需要对计算机图形学有深入的理解。 2. 状态机:OpenGL 是一个状态机,这意味着你可以通过一系列的函数调用来改变它的内部状态,然后这些状态会影响后续的渲染操作。 3. 可扩展性:OpenGL 的一个重要特性是它的可扩展性。硬件制造商可以为他们的硬件特性定义新的 OpenGL 函数和参数。这些扩展可以通过 OpenGL 的扩展机制被查询和使用。 4. 跨平台和跨语言:OpenGL 可以在所有主要的操作系统(如 Windows、macOS 和 Linux)上运行,并且有各种编程语言的绑定,包括 C、C++、Python、Java 和许多其他语言。
资源推荐
资源详情
资源评论
收起资源包目录
这是一个基于OpenGL和SDL的可以支持Windows和Linux的游戏扩展库.zip (1853个子文件)
Reflect.bmp 768KB
UseBox2D.cmake 223B
Box2DConfig.cmake 188B
config 89B
XGun.cpp 280KB
XMultiListBasic.cpp 140KB
XMultiList.cpp 140KB
XBasicOpenGL.cpp 112KB
XSprite.cpp 102KB
XFrameWork.cpp 97KB
XNodeLine.cpp 84KB
GGame.cpp 79KB
XMath.cpp 73KB
videoInput.cpp 73KB
GGame.cpp 70KB
SDL_ttf.cpp 67KB
XEdit.cpp 66KB
XTerrain.cpp 65KB
XConfigManager.cpp 64KB
XSocket.cpp 60KB
XShaderGLSL.cpp 52KB
XMultiText.cpp 51KB
XGem.cpp 50KB
XResourcePack.cpp 46KB
XCombo.cpp 46KB
XObjectManager.cpp 40KB
XFontUnicode.cpp 39KB
XColorSpace.cpp 38KB
XResourceOptimize.cpp 38KB
tinyxmlparser.cpp 37KB
tinyxml.cpp 37KB
XSocketEx.cpp 36KB
XSlider.cpp 36KB
XDirectoryList.cpp 35KB
XMovieFfmpeg.cpp 35KB
XModelObj.cpp 33KB
XActionDescription.cpp 31KB
XTimeLine.cpp 30KB
XModBusProtocol.cpp 30KB
XChart.cpp 29KB
XMenu.cpp 29KB
XTab.cpp 29KB
XStringFun.cpp 29KB
b2World.cpp 29KB
XRigidBall.cpp 29KB
XButton.cpp 28KB
XAVStream.cpp 28KB
XFrameEx.cpp 27KB
XLogBook.cpp 27KB
XBasic3D.cpp 26KB
XFontTTF.cpp 26KB
XGraph.cpp 25KB
XPropertyBox.cpp 24KB
XSoftBoard.cpp 24KB
XFrame.cpp 24KB
XCheck.cpp 23KB
XMoveData.cpp 23KB
b2ContactSolver.cpp 22KB
XFont.cpp 21KB
XSubWindowEx.cpp 21KB
OscReceivedElements.cpp 21KB
XProgress.cpp 19KB
XMouseAndKeyBoardDefine.cpp 19KB
XNetClient.cpp 19KB
XSerialPort.cpp 18KB
UdpSocket.cpp 18KB
XTextureInformation.cpp 17KB
b2PrismaticJoint.cpp 16KB
b2DynamicTree.cpp 16KB
XSliderRing.cpp 16KB
XButtonEx.cpp 16KB
XDataBasic.cpp 16KB
XPasswordPad.cpp 16KB
b2Island.cpp 16KB
UdpSocket.cpp 16KB
OscOutboundPacketStream.cpp 16KB
XTurnBoards.cpp 16KB
XPicRectEx.cpp 16KB
XBasicFun.cpp 15KB
XEngineCommon.cpp 15KB
XFtpServer.cpp 15KB
b2CollideEdge.cpp 15KB
XMesh2D.cpp 15KB
XSubWindow.cpp 14KB
XWindowGlfw.cpp 14KB
XNetServer.cpp 14KB
XNumber.cpp 14KB
XRadios.cpp 14KB
XFColor.cpp 14KB
XXml.cpp 14KB
XCtrlManagerBase.cpp 13KB
XFile.cpp 13KB
XEchoParticles.cpp 13KB
b2Distance.cpp 13KB
b2RevoluteJoint.cpp 13KB
XMesh2DBz.cpp 13KB
XWindowSDL.cpp 12KB
X2DPacker.cpp 12KB
X3DWorld.cpp 12KB
XNumberEx.cpp 12KB
共 1853 条
- 1
- 2
- 3
- 4
- 5
- 6
- 19
资源评论
野生的狒狒
- 粉丝: 2820
- 资源: 2233
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功