热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

将引擎向Linux平台移植(Ubuntu9.04)

点击看大图这两天尝试将引擎往Linux上面移植了一下,还是颇有成效我使用的Linux系统为Ubuntu9.04引擎项目我是采用makefile生成,测试项目图省事儿就用code::blocks了,具体如何写makefile这里不详细介绍了移植过程和一些心得和大家分享一下:首先将makefile写好,使用apt-get安装依赖库文件(如果有的话。这里我的项目用了fre

效果

点击看大图

这两天尝试将引擎往Linux上面移植了一下,还是颇有成效

我使用的Linux系统为Ubuntu 9.04

引擎项目我是采用makefile生成,测试项目图省事儿就用code::blocks了,具体如何写makefile这里不详细介绍了

移植过程和一些心得和大家分享一下:

首先将makefile写好,使用apt-get安装依赖库文件(如果有的话。这里我的项目用了freeimage、freetype、OIS等等)

make一次,看看大致有些什么问题

像是引用了Windows头文件,调用了Win32函数的地方,都用平台宏定义给“隔离”起来,暂时不知道如何在linux下面实现的就空着

渲染窗体和渲染器在引擎中应该是两个相对独立的概念,把它们区分开实现。

Linux下面渲染窗体的创建我调用了X11的函数,这里我碰到了X11和freetype的定义发生冲突的情况,最后是这样处理的:

view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
#if defined __PLATFORM_LINUX  
namespace X11   // 防止X11的类型名与FreeType冲突  
{  
#include   
#include   
#include   
#include   
}  
#endif  // #if defined __PLATFORM_LINUX 
#if defined __PLATFORM_LINUX
namespace X11 // 防止X11的类型名与FreeType冲突
{
#include
#include
#include
#include
}
#endif // #if defined __PLATFORM_LINUX

用一个命名空间把整个X11的定义给包括起来,以后调用就加上“X11::”前缀
OpenGL渲染器在Win32下面我是做成dll的形式动态加载,在linux下面就是产生so文件了
生成so文件时候要注意,不要使用ld命令,用g++代替,否则在调用so文件时候会产生一个“未定义的符号__dso_handle”的错误(这个问题着实困扰了我一阵子,主要还是由于对linux下面编译的不熟悉造成的:P)
OpenGL渲染器当中,使用glx函数代替win32的wgl函数,主要功能集中在渲染器的初始化、销毁以及SwapBuffers上面
其他还需要注意的就是g++和vs语法上面的一些不一样的地方了,我遇到一例就是在模板实例化的声明上

基本上这样,我的代码就能够跑起来了

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aosyang/archive/2009/08/23/4474261.aspx


推荐阅读
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
author-avatar
针箍投药_996
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有