碧宁
C++游戏 winsock mysql
C++博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2010年5月7日

用freebs快一年了


        用freebsd系统快一年了,去年夏天刚刚开始用时,对系统安装,基本的操作研究过,用源码编译lua和mysql时,lua库文件不能正常链接,mysql的sock也出错。
       最近公司服务器龙哥重新装过一次,自己在vb上也装上了8.0版本,真正体会到了ports安装软件对使用fb带来的方便,lua和msyql的库都有了,写了个小程序测试也可以用。
       朋友介绍luabind比较强大,去看过一些翻译的文章,比我自己用的这个强啊,更稀奇的是,在fb的ports上也有这个软件,make intall clean就可以看到库文件,在原先的程序上添加luabind,编译慢,又会出错,纠结了一些时间才发现,0.7版本的不支持lua51,只能是lua50,只是在系统上装最新的,但新问题又来了。
     

posted @ 2010-05-07 22:28 碧宁 阅读(348) | 评论 (0) | 编辑 收藏
 

2008年10月29日

3D游戏开发流程[转]

队伍组成

开发团队
n 制作人
n 执行制作人
n 策划团队
n 程式团队
n 美术团队

销售团队

测试团队

游戏评论队伍

游戏制作人

n 开发组长(always)
n 资源管理 (Resource Management)
n 行政管理 (Administration)
n 向上負責 (Upward Management)
n 专案管理 (Project Management)

游戏执行制作人

n 专案管理执行 (Project Management)
n Daily 運作
n House Keeping
n Not full-time job position

 

游戏策划

n 故事设计 (Story Telling)
n 脚本设计 (Scripting)
n 玩法设计 (Game Play Design)
n 关卡设计 (Level Design)
n 游戏調適 (Game Tuning)
n 数值设定 (Numerical Setup)
n AI 设计 (Game AI)
n 音效设定 (Sound FX Setup)
n 场景设定 (Scene Setup)

游戏美术

n 场景 (Terrain)
n 人物 (Character)
n 建模 (Models)
n 材質 (Textures)
n 动作 (Motion / Animation)
n 特效 (FX)
n 用户界面User Interface

游戏程序

n 游戏程序 (Game Program)
n 游戏开发工具 (Game Tools)
n Level Editor
n Scene Editor
n FX Editor
n Script Editor
n 游戏Data Exporters from 3D Software
n 3dsMax / Maya / Softimage
n 游戏引擎开发Game Engine Development
n 网络游戏服务端开发Online Game Server Development

 

游戏开发流程

创意 提案 制作 整合 测试
赞成 雏形 除错 调试

Pre-alpha Alpha Beta 结束

n 创意 (Idea)
n 提案 (Proposal)
n 制作 (Production)
n 整合 (Integration)
n 测试 (Testing)
n 除錯 (Debug)
n 调试 (Tuning)

游戏设计(Concept Design)

n 游戏类型 (Game Types)
n 游戏世界观 (Game World)
n 故事 (Story)
n 游戏特色 (Features)
n 游戏玩法 (Game Play)
n 游戏定位 (Game Product Positioning)
n Target player
n Marketing segmentation / positioning
n 风险评估 (Risk)
n SWOT (优势Strength/缺点Weakness/机会Opportunity/威胁Threat)

游戏提案 (Proposal)

n 系統分析 (System Analysis)
n 游戏设计文件撰写 (Game Design Document)
n 传播媒介文件撰写 (Media Design Document)
n 技术设计文案撰写 (Technical Design Document)
n 游戏专案建立 (Game Project)
n 时间表Schedule
n 进程/控制Milestones / Check points
n 管理Risk management
n 测试计划书
n 团队建立 (Team Building)

游戏开发 (Production)

n 美术量产制作
n (建模)Modeling
n (结构)Textures
n (动画)Animation
n (动作)Motion
n (特效)FX
n 程序开发 (Coding)
n 策划数值设定

游戏整和 (Integration)

n 关卡串联 (Level Integration)
n 数值调整 (Number Tuning)
n 音效置入 (Audio)
n 完成所有美术
n 程旬与美术結合
n (攻略)Focus Group (说明书User Study)
n 发布一些攻略截图Release some playable levels for focus group

游戏测试 (Testing)

n Alpha(α) 测试
n 除錯 (Debug)
n Beta (β)测试
n 数值微调
n Game play 微调
n 对网络游戏而言 (MMOG)
n 封閉测试 (Closed Beta)
n 開放测试 (Open Beta)
n 压力(极限)测试 (Critical Testing)
n 网络游戏才有

关于Bug

n Bug 分級 (Bug Classification)
n A Bug
n B Bug
n C Bug
n S Bug
n Principles
n Bug 分級从严
n Tester(测试对象?—) vs Debugger(调试程序)

系统层System Layer – APIs

n 3D Graphics API
n DirectX 9.0 SDK – Direct3D
n OpenGL 2.0
n 2D API
n DirectX 9.0 SDK - DirectMedia
n Win32 GDI
n Input Device
n DirectX 9.0 SDK – DirectInput
n Audio
n DirectX 9.0 SDK – DirectSound / Direct3DSound / DirectMedia
n OpenAL
n OS API
n Win32 SDK
n MFC
n Network
n DirectX 9.0 SDK – DirectPlay
n Socket library

引擎层Engine Layer

n 3D Scene Management System
n Scene Graph
n Shaders
n 2D Sprite System
n Audio System
n Gamepad
n Hotkey
n Mouse
n Timers
n Network
n DDK Interface
n Terrain
n Advanced Scene Management – Space Partition
n BSP Tree
n Octree
n Character System
n Motion Blending Techniques
n Dynamics
n Collision Detection
n SoundFX
n User Interface

游戏层Game Play Modula

n NPC (Non-playable Characters)
n Game AI
n Path Finding
n Finite State Machine
n …
n Avatar
n Combat System
n FX System
n Script System
n Trading System
n Number System
n …
Game Dev Tools
n Visual C/C++
n .net 2003
n Visual C/C++ 6.0+ SP5
n DirectX
n Current 9.0c
n NuMega BoundsChecker
n Intel vTune
n 3D Tools
n 3dsMax/Maya/Softimage
n In-house Tools

 

~~~~~~~~~~结束~~~~~~~~~

游戏分类

n RPG (Role playing games角色扮演)
n AVG (Adventure games冒险类)
n RTS (Real-time strategy games既时战略)
n FPS (First-person shooting games主视觉射击)
n MMORPG(多人在线角色扮演)
n SLG (战棋)
n Simulation(模拟)
n Sports(运动)
n Puzzle games(解迷)
n Table games(棋牌)

posted @ 2008-10-29 15:07 碧宁 阅读(806) | 评论 (0) | 编辑 收藏
 

2008年10月16日

c++连接数据库
    以前到网上查资料,关于C++连接mysql数据库,所以就会用c api来操作mysql,随后想想,只会用c api有点不太满足,于是这几天一直找用ado连接mysql的方法.用ado连接mysql的数据库的资料没找到,反而找到连接sql server的,通过ole db方式成功连接,然后修改一下连接字符,用odbc的方式又成功了,想想,在odbc中配置的sql server数据源连接方式与mysql数据源一样,是否只在变换一下数据源就连接到她的数据库中去呢.结果只修改数据源也把mysql连接成功了.
    原来发现,odbc与ole db的方法只是连接字符中provider与dsn之间的区别.而且在dsn中只要写好dsn就可以.用户名和密码等在dsn中已配置好.


下一步就是如何来操作这些存储过程了.因为我的SQL语句都写在数据库上.呵,完全是为了安全吗?

PS:今天(2009-01-22)终于把C++调用存储过程中的返回数据集搞好了.问题出在联接数据时,最后一个参数没有设置成CLIENT_MULTI_STATEMENT。
几个月前没有显示中文是因为没有加“mysql_query(&mysql,"set names gb2312"),现在把两个问题都解决了。
posted @ 2008-10-16 15:25 碧宁 阅读(1067) | 评论 (0) | 编辑 收藏
 

2008年5月29日

mysql存储过程的输出值
      一个C++程序中,用到c api来调动存储过程.输入多个参数,返回一个int结果.

    用c api都调用好后,读取数据时,rows[0]不能把MYSQL_RES转成整型.到网上找了好多资料.没查到为什么


 后来在csdn中,2005年的一个帖.楼主也出现这问题,而他是不确定用atoi能否表示.

看了后,是应该用atoi把他转成int型的.结果正确.
posted @ 2008-05-29 16:14 碧宁 阅读(1063) | 评论 (0) | 编辑 收藏
 

2008年5月23日

mysql_com.h
到网上找了好多资料都没有mysql_com.h 中的socket错误.后来才发现,没有把winsock2.h引进去.但引入进去的时候,还是有一样的错误.确没发现winsock2.h应要在msyql.h的前面.
  以后得记住.这是基础方面的东西.
posted @ 2008-05-23 19:10 碧宁 阅读(700) | 评论 (0) | 编辑 收藏
 

2008年5月13日

socket [转]

 

下面是一个C++调用windows API实现有通信程序,您可以据此进行修改,封装成类.
 
// *******************************************************************
// client.cpp : Defines the entry point for the console application.
// author: hnynes
// e-mail: hnynes1015@163.com
// QQ: 61737489
// MSN: hnynes@msn.com
// *******************************************************************
#include "stdafx.h"
#include <winsock2.h>
#include <iostream>
#define PORT_SERVER 6656

int main(int argc, char* argv[])
{
 std::cout << "Start up tcp client." << std::endl;
 
 WSADATA wsaData;
 WORD sockVersion = MAKEWORD(2, 0);
 if (0 != WSAStartup(sockVersion, &wsaData))
 {
  std::cout << "Failed to retrive socket version."
   << std::endl;
  return 0;
 }
 
 SOCKET sock_client;
 sock_client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 if (INVALID_SOCKET == sock_client)
 {
  std::cout << "Invalid socket." << std::endl;
  WSACleanup();
  return 0;
 }
 sockaddr_in addr_sev;
 addr_sev.sin_family = AF_INET;
 addr_sev.sin_port = htons(PORT_SERVER);
 addr_sev.sin_addr.s_addr = inet_addr("127.0.0.1");
 if (SOCKET_ERROR == connect(sock_client, (sockaddr *)&addr_sev, sizeof(addr_sev)))
 {
  std::cout << "Failed to connect." << std::endl;
  WSACleanup();
  return 0;
 }
 char buf[512];
 int recv_size = 0;
 recv_size = recv(sock_client, buf, 512, 0);
 if (512 > recv_size)
 {
  buf[recv_size] = '\0';
  std::cout << "receive data is :" << buf << std::endl;
  memset(buf, 0, sizeof(buf));
 }
 else
 {
  std::cout << "receive data is overflow" << std::endl;
 }
 
 closesocket(sock_client);
 WSACleanup();
 system("PAUSE");
 return 0;
}
 
// *******************************************************************
// server.cpp : Defines the entry point for the console application.
// author: hnynes
// e-mail: hnynes1015@163.com
// QQ: 61737489
// MSN: hnynes@msn.com
// *******************************************************************
#include "stdafx.h"
#include <winsock2.h>
#include <iostream>
#define PORT_SERVER 6656
#define NUM_CLIENTS 10
int main(int argc, char* argv[])
{
 std::cout << "Start up tcp server." << std::endl;
 
 WSADATA wsaData;
 WORD sockVersion = MAKEWORD(2, 0);
 if (0 != WSAStartup(sockVersion, &wsaData))
 {
  std::cout << "Failed to retrive socket version."
         << std::endl;
  return 0;
 } 
 SOCKET sock_sev;
 sock_sev = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 if (INVALID_SOCKET == sock_sev)
 {
  std::cout << "Invalid socket." << std::endl;
  WSACleanup();
  return 0;
 }
 sockaddr_in addr_sev;
 addr_sev.sin_family = AF_INET;
 addr_sev.sin_port = htons(PORT_SERVER);
 addr_sev.sin_addr.s_addr = INADDR_ANY;
 if (SOCKET_ERROR == bind(sock_sev, (sockaddr *)&addr_sev, sizeof(addr_sev)))
 {
  std::cout << "Failed to bind." << std::endl;
  WSACleanup();
  return 0;
 }
 if (SOCKET_ERROR == listen(sock_sev, NUM_CLIENTS))
 {
  std::cout << "Failed to listen." << std::endl;
  WSACleanup();
  return 0;
 }
 
 // 多路复用,暂时还未实现.后期会对此给出示例.
 //fd_set reads;
 //fd_set writes;
 //fd_set accepts;
 //FD_ZERO(&reads);
 //FD_ZERO(&writes);
 //FD_ZERO(&accepts);
 //SOCKET sock_client;
 sockaddr_in addr_client;
 int nAddrLen = sizeof(addr_client);
 while (true)
 {
  char tmp[512];
  sock_client = accept(sock_sev, (sockaddr *)&addr_client, &nAddrLen);
  
  if (INVALID_SOCKET == sock_client)
  {
   std::cout << "Failed to accept." << std::endl;
   continue;
  }
  sprintf(tmp, "Your IP is %s\n", inet_ntoa(addr_client.sin_addr));
  send(sock_client, tmp, strlen(tmp), 0);
  std::cout << "Connection from " << inet_ntoa(addr_client.sin_addr)
         << std::endl;
  closesocket(sock_client);
 }
 
 return 0;
}
 
注:本程序使用的是VC6 IDE,编译时请在link中加入对ws2_32.lib库的引用.
这个程序只是一个雏形,也作学习吧.
posted @ 2008-05-13 15:39 碧宁 阅读(317) | 评论 (0) | 编辑 收藏
 

2008年5月4日

在C++中用MYSQL的存储过程的返回多行问题
在C++应用程序中,用到存储过程调用mysql数据库,存储过程用到select返回一行信息,但在程序中出现了错误。
在网上找了这方面的问题,其实可以用视图来解决的。

posted @ 2008-05-04 16:58 碧宁 阅读(1184) | 评论 (2) | 编辑 收藏
 

2008年4月29日

典型开源3D引擎分类比较

常见的3D引擎有:Unreal,Quake,Lithtech,OGRE,Nebula,Irrlicht,Truevision3D...等,其中开源免费的有:orge,irrlicht,fly3d, NeoEngine, revolution3d, Nebula2,Genesis3d等。OGRE 在免费、开源的引擎中评价最高,一个原因是作为一个图形渲染引擎,它支持的图形特性最多,所以渲染质量也不错;另一个原因是设计模式的清晰;另外,速度也不错。OGRE 将专注于向一个纯粹的、然而富于协作和扩展性的图形引擎发展,这得益于它的庞大的社群支持,使得很多事情可以通过外挂一些更专业的引擎来实现,物理引擎使用 ODE 、 Tokamak 、 NovodeX ,网络引擎使用 openTNL 、 RakNet 、 eNet ,声音引擎使用 FMod 、 OpenAL ,以及界面引擎使用 CEGUI 。

 

 

Standard

OGRE

IrrLicht

Truevision3D

General

Type

Only rendering engine

 

Game engine

Include TV3DEngine,TV3DMedia,TV3DNet……

Languages

Written in pure C++, totally object orientated.

Written in pure C++, totally object orientated.

Written in C++ and VB6 with DirectX8.1

License

LGPL

zlib/libpng License(totally free)

·   Free TV3DSDK

·   Registered Developer License

·   group or site licenses

Develop platforms

·   C++

·   .NET

·   C++

·   .NET language binding

VB/VC++/DELPHI/

C#/vb.net

Platforms

Windows

ü         Support

ü         Support

ü         Support

Linux

 

ü         Support

ü         Support

 

MacOS

ü         Support

ü         Support

 

3D API

Direct3D

ü         Support

ü         Support

ü         Support

OpenGL

ü         Support

ü         Support

 

Other

 

·   The Irrlicht Engine software renderer.

·   The Apfelbaum Software Renderer

 

Architecture

Extensibility

·   Extensible example framework

·   Flexible plugin architecture allows engine to be extended without recompilation

·   Use some other professional engines to achieve other features

 

 

Scripting

 

 

 

Materials & Textures

Materials

·   Powerful material declaration language

·   Multiple material

·   Material LOD

·   Multi-texture and multi-pass blending

·   Projective texturing

·   Textures can be provided and updated in real-time by plugins

·   Provide common built in materials based on fixed function pipeline or programmable pipeline

·   add new materials to Irrlicht at runtime, without the need of modifying/recompiling the engine

 

Textures and Mapping

自动产生MipMap;

 

自动调整纹理大小以满足硬件需求。

 

支持可程序控制的纹理坐标生成和转换。

·   Bump mapping

·   Parallax mapping

·   Light maps

·   Sphere mapping

DOT3 Bump mapping

 

没有提供多层纹理和混合模式

Shaders

·   Supports vertex and fragment programs, both written in assembler, and in Cg, DirectX9 HLSL, or GLSL

·   Support many commonly bound constant parameters like worldview matrices, light state information, object space eye position etc

·   Pixel and Vertex Shaders 1.1 to 3.0

·   ARB Fragment and Vertex Programs

·   HLSL

·   GLSL

·   Hardware Vertex Shaders

·   HLSL

Scene Management

General

·   Highly customizable, flexible scene management, not tied to any single scene type.

·   Hierarchical scene graph; nodes allow objects to be attached to each other and follow each others movements, articulated structures etc

·   Scene querying

·   Using a hierarchical scene graph, can mix indoor and outdoor scene seamless together

·   Extensible hierarchical scene management

 

 

BSP Support

BSP 场景的天空穹、粒子特效、高级材质属性,乃至 BSP 的空间分割规则都会被正确识别、自动实现

·   对 BSP 的特性支持比较贫乏

对 BSP 的读取存在 BUG

Other

 

 

 

Special effects

Particle System

 

·   easily extensible emitters, affectors and renderers

·   can be defined in text scripts for adjusting in real-time

·   particle pooling

·   Customizeable Particle systems for snow, smoke, fire, ...

Atmospheric effects like fog, cloud, sky (box and sphere), stars.

Light & Shadow

 

当前支持三种阴影:调整纹理阴影,调整模版阴影,附加模板阴影。不支持软阴影

Multiple shadow rendering techniques,

·   Dynamic lights

·   Dynamic shadows using the stencil buffer

·   Optimized dynamic stencil shadows

·   DirectX Hardware Lighting

Other

·   Support for skyboxes, skyplanes and skydomes

·   Billboarding for sprite graphics

·   Transparent objects automatically managed

 

·   Realistic water surfaces

·   Billboards

·   Transparent objects

·   Skyboxes

·   Fog

·   Texture animation

Billboard

Character Animation

 

·   Skeletal animation

·   blending of multiple animations

·   variable bone weight skinning

·   hardware-accelerated skinning

 

·   Morph target animation:

·   Skeletal animation

·   Skeleton based, Key frame based, morph based animations

·   Animations that can be enhanced by bone attaching or custom bone rotations.

Supported Formats

textures file formats

·   PNG, JPEG, TGA, BMP or DDS

·   1D textures, volumetric textures, cubemaps and compressed textures (DXT/S3TC)

·   PSD,JPG,PNG,TGA,BMP,PCX 

 

 

mesh file formats

Milkshape3D, 3D Studio Max, Maya, Blender and Wings3D

·   3DS,OBJ,CSM,DAE,DMF,OCT,X,MS3D,MY3D,LMTS,BSP,MD2

3DS, X, MDL, MD2, MD3

Document

 

Great number of users and well documented.

well documented API with lots of examples and tutorials.

 

Other

GUI

 

 

 

2D Drawing

 

 

 

XML

ü         Support

XML Converter: convert efficient runtime binary formats to/from XML for interchange or editing

ü        Support

快速的XML分析器

 

Web Site

 

http://www.ogre3d.org

http://irrlicht.sourceforge.net

http://www.truevision3d.com


来自:http://www.cnblogs.com/cyberchen-net

posted @ 2008-04-29 13:13 碧宁 阅读(1184) | 评论 (0) | 编辑 收藏
 
OGRE + CEGUI :强大的用户界面(http://www.yanchen.com/article.asp?id=69)

 

CEGUI ,全称 "Crazy Eddie's GUI System" ,是一个专门的用户界面库,开源并且免费,它支持 DirectX8 、 DirectX9 ,除了可以作为 OGRE 的界面外挂,还支持另一个免费开源的 3D 引擎 Irrlicht 。由于它功能的相对强大和灵活, OGRE 的开发团队一直在推荐 OGRE 用户使用这个 CEGUI 来开发用户界面,逐渐抛弃 OGRE 本身过于简陋的 GUI 插件。尤其是在行将到来的新版本 OGRE 1.5 的声明中特别强调了这一点,尽管这个版本仍然暂时保留内置 GUI 系统,但 OGRE 1.5 将会是最后一个保留内置 GUI 的版本。 OGRE 看来似乎将专注于向一个纯粹的、然而富于协作和扩展性的图形引擎发展,这应该得益于它的庞大的社群支持,使得很多事情可以通过外挂一些更专业的引擎来实现,物理引擎使用 ODE 、 Tokamak 、 NovodeX ,网络引擎使用 openTNL 、 RakNet 、 eNet ,声音引擎使用 FMod 、 OpenAL ,以及这个界面引擎,使用 CEGUI 。外挂现成模块的好处就是可以专注于一个方面,开发一个五脏俱全的游戏引擎并不是个容易的事情,市面上最负盛名的几个商业引擎的开发, Unreal 、Renderware 、 Lithtech ,往往要耗费数百人年,并且在这些商业引擎中同样会使用外挂的商业库,在这个年代,没有人可以从头创建一切。

CEGUI 基于 Unicode ,所以它支持中文字体的显示, 但是对中文字符的输入现在尚未解决,因为不断有来自中国的 OGRE + CEGUI 用户的质询和申请,对中文输入的支持可能已在考虑中。

CEGUI 的官方主页在这里:
Crazy Eddie's GUI System


1. CEGUI 的 CVS 下载
使用 WinCVS ,使用方法参考 OGRE 一起学 (1) —— 获取 OGRE 。

(1) 在 WinCVS 主界面左栏选中 "cvshome" ;

(2) 从主菜单选择 [Admin]-[Command Line...] ,弹出 "Command line settings" 面板,在 "Settings" 选项卡的上部输入框里,输入如下指令进行登陆:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/crayzedsgui login
当弹出对话框问讯密码时直接按回车。

(3) 成功登陆以后, WinCVS 主界面的下部信息栏会显示这样一条信息:

***** CVS exited normally with code 0 *****

code 0 就表示登陆成功,如果不成功,显示为 code 1 。

(4) 登陆成功以后,再次打开 "Command line settings" 面板,输入并运行如下指令:

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/crayzedsgui co cegui_mk2

CVS 源代码就开始下载了。耐心等它下载完毕。

(5) 这时候在 WinCVS 主界面左栏的 “cvshome” 下边,多了一个 "cegui_mk2" 的文件夹。你可以到硬盘的 F:\cvshome\cegui_mk2\ 看一下,所有的源代码都在那里了。


2. CEGUI 本体 lib 和 dll 的编译:
最好使用 VS.Net 2003 的 VC7.1 来编译,它对 OGRE 和 CEGUI 的支持都很好。 VC7.0 和 VC7.1 都可以。

(1) 首先要下载编译 CEGUI 所需的依赖项,包括头文件和库,下载页在这里:
http://crayzedsgui.sourceforge.net/modules.php?name=Downloads&d_op=viewdownload&cid=6
首先下载 CEGUI Mk-2 Win32 Dependencies: Common Files ,这些是公用的头文件;
其次根据你的编译器版本选择对应的库,例如我使用 VC.Net 2003 ,就选择下载 CEGUI Mk-2 Win32 Dependencies: Libs for MSVC 7.1 。
下载以后分别解压缩,把头文件 cegui_mk2-deps-common\dependencies\include 和库文件cegui_mk2-deps-vc7.1\dependencies\lib 这两个目录全部复制到 cvshome\cegui_mk2\dependencies 目录下。

(2) 现在设置工作环境。打开 VS.NET 或 VS.NET 2003 ,在主菜单中选择 [工具]-[选项...] ,打开 "选项" 面板,在左边目录选择 [项目]-[VC++ 目录] ,在右栏的 Include 和 Lib 目录下添加以下路径:

包含文件:
X:\cvshome\cegui_mk2\dependencies\include
库文件:
X:\cvshome\cegui_mk2\dependencies\lib
注意把这几条目录放在目录列表的最上面。

(3) OK. 现在打开 cvshome\cegui_mk2\makefiles\win32\VC++7.1\CEGUI.sln ,从主菜单中选择 [生成]-[批生成...] ,打开 "批生成" 面板,点击右边的 [全选] 按钮,然后点击 [重新生成] 按钮开始生成,静待生成结束。

编译生成的 *.dll 文件在 cvshome\cegui_mk2\bin 目录下, *.lib 文件在 cvshome\cegui_mk2\lib 目录下。

编译成功以后,为了编译以后的 CEGUI 相关项目,我们要在 VS.Net 的工作环境中添加 CEGUI 的 include 和 lib 目录:

包含文件:
X:\cvshome\cegui_mk2\include
库文件:
X:\cvshome\cegui_mk2\lib


3. 编译 CEGUI 示例

(1) 首先来这里下载几个 CEGUI 示例:
http://crayzedsgui.sourceforge.net/modules.php?name=Downloads&d_op=viewdownload&cid=5
其中的 CEGUI under Ogre - Demo 4 和 CEGUI under Ogre - Demo 7 是带有源文件的,我们挑选 CEGUI under Ogre - Demo 4 来尝试编译。

(2) Demo 下载以后解压缩,文件目录不要乱放,要放到 cvshome 目录下。
然后双击 cvshome\ogre_gui_demo4\CEGUIOgre_TestDriver1.sln 打开解决方案。
由于 CEGUI 作者的疏忽, Release 的项目设置里有几个多余的 lua.lib ,会导致编译时因找不到这些库而失败,所以我们需要删除这几个库。打开 CEGUIOgre_Demo4 的项目属性,删除 Release 配置属性的 [链接器]-[输入]-[附加依赖项] 条目中的 liblua.lib liblualib.lib libluabind.lib 这几个库。

(3) 然后生成。
生成的 *.exe 文件在 cvshome\ogre_gui_demo4 的 Release 和 Debug 目录下。但是你现在就打开运行肯定会失败。

失败的原因首先是因为这个 Demo 使用的是最新版本的 OGRE 的头文件和库来编译,但是 Release 和 Debug 目录下放的是老版本的 *.dll ,所以你需要把 cvshome\ogrenew\Samples\Common\bin 的 Release 和 Debug 目录下的所有 *.dll 都复制到 cvshome\ogre_gui_demo4 的 Release 和 Debug 目录下,用你的最新版本覆盖旧版本,这是一个;

然后, CEGUI 的依赖项中需要一个 *.dll ,在 cvshome\cegui_mk2\dependencies\lib 中有两个 *.dll ,把 xerces-c_2_5_0.dll 复制到 cvshome\ogre_gui_demo4\Release ,把 xerces-c_2_5_0D.dll 复制到 cvshome\ogre_gui_demo4\Debug 。

还有 CEGUI 本体的 *.dll ,在 cvshome\cegui_mk2\bin 目录下,也要全部复制过来。 *.dll 文件名带 _d 的是 Debug 版本。

OK. 现在示例可以运行了。




作为对 CEGUI 的一个应用实例,你可以下载下面这个 OGRE 粒子编辑器来体验一下:

ParticleEditor_AlphaDemo


posted @ 2008-04-29 13:02 碧宁 阅读(1862) | 评论 (0) | 编辑 收藏
 

2008年4月28日

转:C/C++头文件一览
C/C++头文件一览
C、传统 C++

#include <assert.h>    //设定插入点
#include <ctype.h>     //字符处理
#include <errno.h>     //定义错误码
#include <float.h>     //浮点数处理
#include <fstream.h>    //文件输入/输出
#include <iomanip.h>    //参数化输入/输出
#include <iostream.h>   //数据流输入/输出
#include <limits.h>    //定义各种数据类型最值常量
#include <locale.h>    //定义本地化函数
#include <math.h>     //定义数学函数
#include <stdio.h>     //定义输入/输出函数
#include <stdlib.h>    //定义杂项函数及内存分配函数
#include <string.h>    //字符串处理
#include <strstrea.h>   //基于数组的输入/输出
#include <time.h>     //定义关于时间的函数
#include <wchar.h>     //宽字符处理及输入/输出
#include <wctype.h>    //宽字符分类

//////////////////////////////////////////////////////////////////////////

标准 C++ (同上的不再注释)

#include <algorithm>    //STL 通用算法
#include <bitset>     //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>     //复数类
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>      //STL 双端队列容器
#include <exception>    //异常处理类
#include <fstream>
#include <functional>   //STL 定义运算函数(代替运算符)
#include <limits>
#include <list>      //STL 线性列表容器
#include <map>       //STL 映射容器
#include <iomanip>
#include <ios>       //基本输入/输出支持
#include <iosfwd>     //输入/输出系统使用的前置声明
#include <iostream>
#include <istream>     //基本输入流
#include <ostream>     //基本输出流
#include <queue>      //STL 队列容器
#include <set>       //STL 集合容器
#include <sstream>     //基于字符串的流
#include <stack>      //STL 堆栈容器    
#include <stdexcept>    //标准异常类
#include <streambuf>    //底层输入/输出支持
#include <string>     //字符串类
#include <utility>     //STL 通用模板类
#include <vector>     //STL 动态数组容器
#include <cwchar>
#include <cwctype>

using namespace std;

//////////////////////////////////////////////////////////////////////////

C99 增加

#include <complex.h>   //复数处理
#include <fenv.h>    //浮点环境
#include <inttypes.h>  //整数格式转换
#include <stdbool.h>   //布尔环境
#include <stdint.h>   //整型环境
#include <tgmath.h>   //通用类型数学宏


本文转自CSDN,作者WindsonZhL(风之子)

posted @ 2008-04-28 16:54 碧宁 阅读(400) | 评论 (0) | 编辑 收藏
 
仅列出标题  下一页
随笔:13 文章:4 评论:6 引用:0
<2025年5月>
日一二三四五六
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿(5)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2010年5月 (1)
  • 2008年10月 (2)
  • 2008年5月 (4)
  • 2008年4月 (6)

文章档案

  • 2016年12月 (1)
  • 2008年10月 (1)
  • 2008年4月 (2)

收藏夹

  • a(3) (rss)

搜索

  •  

最新评论

  • 1. re: 在C++中用MYSQL的存储过程的返回多行问题
  • 靠,找到你这来了。
  • --nianfu
  • 2. re: C++连接mysql时找不到mysql.h的解决办法之一
  • 请问你的MYSQL安装时是否选的是完全安装,如果不是,则肯定是没有的
  • --LLF
  • 3. re: C++连接mysql时找不到mysql.h的解决办法之一
  • mysql/lib/debug 我的安装目录下面没这个路径啊
  • --zhangdaquan
  • 4. re: 在C++中用MYSQL的存储过程的返回多行问题
  • 除了视图外,在C++中直接可以调用带select语句的存储过程,关键是在联接数据库时,把mysql_real_connect最后一个参数设置成CLIENT_MULTI_STATEMENT.
  • --碧宁
  • 5. re: 转:各种引擎介绍和日本美国直接的游戏程序员差别
  • @lovedday
    这是转的文章,文章出于哪里不太清楚,但可以帖出来给自己和大家看.
  • --碧宁

阅读排行榜

  • 1. OGRE + CEGUI :强大的用户界面(http://www.yanchen.com/article.asp?id=69)(1862)
  • 2. 转:sockaddr与sockaddr_in结构体详细讲解(1534)
  • 3. 典型开源3D引擎分类比较(1184)
  • 4. 在C++中用MYSQL的存储过程的返回多行问题(1184)
  • 5. c++连接数据库(1067)

评论排行榜

  • 1. 转:各种引擎介绍和日本美国直接的游戏程序员差别(2)
  • 2. 在C++中用MYSQL的存储过程的返回多行问题(2)
  • 3. socket [转](0)
  • 4. mysql_com.h(0)
  • 5. mysql存储过程的输出值(0)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 碧宁