- 博客(30)
- 收藏
- 关注
原创 堆溢出bug定位调试修复
就是 WinDbg自带的工具软件 gflags, 通过这个软件可以修改注册表让程序运行时,系统runtime分配内存时额外再前后多分配两个字节,并且填充0xfd(貌似是这个),当程序内存发生溢出时写到。gflags工具下载。debug下一切正常, release时随机崩溃到某几个地方,由于使用了qt库,炸到qt函数调用最后崩溃到系统dll中,根本无法调试,最后发现了一个神器。不是完全随机崩溃,崩溃到某几个正常的地方,开始怀疑是不是这几个地方真的有什么bug,下面Debugger可以不选,我选了之后有报错,
2024-05-22 17:18:39 531
原创 OpenGL学习入门及开发环境搭建
最近学习OpenGL开发,被各种openGL库搞得晕头转向,什么glut, glew glfw glad等等。报链接错误WinMain符号。开发时我们自己的程序总会启动控制台窗口,怎样关闭控制台窗口呢,可在visualstudion。也可以去glad官网定制生成自己的版本,官网地址是: http://glad.sh。glad有1.x版本 和 2.x版本,我们使用最新的2.x版本。glfw是glut的升级版,跨平台的主要处理窗口 事件相关。//int main() //控制台入口,显示控制台窗口。
2024-05-22 16:55:35 342
原创 luajit 使用 clang编译的坑
由于官方提供的编译脚本仅有MakeFile,所以暂时只能跨平台编译,在Windows Subsystem Linux中操作。因为新版NDK使用clang作为编译器,而MakeFile里面的一些路径处理还是比较旧,在路径拼接上存在一些问题,需要修改。主要是移动平台,涉及跨平台编译,因为对跨平台编译具体细节没有系统研究,这里先记录一下跨平台编译LuaJIT的主要过程。为了尝试将LuaJIT接入虚幻Lua插件之中,需要预编译LuaJIT链接库,在桌面平台问题不大,
2023-08-04 11:56:51 889
原创 ogre-next吃鸡笔记
本人使用的版本是ogre-next2.3一、修复OgreSTBICodec.cpp 中decode()函数解码24位图片的bug 修复如下:Codec::DecodeResult STBIImageCodec::decode(DataStreamPtr& input) const { // Buffer stream into memory (TODO: override IO functions instead?) .........
2022-02-16 17:43:48 872
原创 升级ogre1.13.0吃鸡版, win中文路径读取错误解决
在使用之前版本ogre的时候win平台是可以直接读取da_OGRE_FILESYSTEM_ARCHIVE_UNICODE
2021-05-31 09:30:29 256
原创 Ogre在 iOS上创建 es3.0 的 glContext
使用es3.0 可以支持ETC2格式的压缩纹理.修改方法如下:1、 找到工程生成目录下的include文件夹,即OgreBuildSettings.h所在的文件夹。找到 OgreGLES2Config.h 修改该文件中的宏 #define OGRE_NO_GLES3_SUPPORT 02、兼容低端机,如果不支持es3.0的设备,可以让其尝试创建es2.0找到 CCES2Render-ios.m文件修改下面这个函数如下// Create an OpenGL ES ...
2021-05-21 12:02:39 216
原创 cocos2d-x的坑之 setUniformTexture(textureName, _TextureID);
记录一下,这个函数有坑。 cocos2dx为了兼容移动平台,限制默认最大纹理单元是16 。而且一般情况下内置了4个纹理单元的 uniform 变量 CC_Texture0 CC_Texture1 CC_Texture3 CC_Texture4, 我们可以不用定义直接使用。在我的一个片段shader中可能需要用到16个纹理单元。 因此自定义了 texture0、 texture1 ... texture15所以我打算不使用内置的CC_Texture0 ... 等几个变量然后需要为...
2021-01-16 18:05:51 597
原创 lua不同虚拟机共享table的实现2 - 通过自定义c对象共享
//// main.cpp// lua//// Created by ycmac on 2020/12/14.// Copyright © 2020 ycmac. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <thread>#include <vector>#include <l.
2020-12-31 14:48:29 324
原创 lua不同虚拟机共享table的实现
为何要在多个lua虚拟机间共享table呢, 因为lua是不支持真正的多线程的,Lua中的协程其实也是在单线程中运行的。所以为了发挥cpu的最大性能,我们需要通过多线程异步执行一些任务。这些任务线程是不会阻塞lua虚拟机线程的执行。当异步线程执行完成之后就需要把数据或者消息传递给主线程lua虚拟机。 当然数据的传递有很多种方式,比较常见的就是直接传递一个c++的对象或者 以字符串char*传递一块内存。 但是由于c++对象的数据无法在lua中直接使用所以往往接收后还需要额外的解......
2020-12-23 21:03:09 1965
原创 cocos2dx4.0编译ios笔记
下载官网cocos2dx-4.0压缩包解压, 在根目录创建xcode_build_ios文件夹。 打开cmake工具选择cocos2dx根目录和刚才创建的目录。 点击config,选择 xcode, 注意不要点确定,下面有4个选项,选择 Specify options for cross-compiling 点 Continue, 在 Operating System 填iOS其他都不管,点done ,然后点生成 就ok了, 接着用xcode打开刚才生成的项目...
2020-12-04 16:18:42 842
原创 cocos2dx实现不同图片材质精灵渲染批次合并
一、 实现技术原理 多重纹理、 顶点合并 二、适用场景。 有大量的精灵,位于同一个图集或者不同图集,最多8张不同的图集(目前只是用了8重纹理)。可以执行帧动画,但是帧动画的所有帧必须在同一个图集上。并且所有执行该帧动画的精灵动画完全同步,即必须整齐划一的步伐,比如军队士兵。不同步其实也可以实现,但是由于不能共用同一个精灵的uv,所以需要所有精灵都执行一个动画来更新,会带来额外的动作更新开销。暂时我们项目中要求一致就可以了,因此未实现。三、技术细节1...
2020-11-18 20:31:50 1489 3
原创 cocos2dx矩阵坐标计算的坑用transformPoint 而不是 transformVector
今天在重载Sprite 的 OnDraw()函数中 计算顶点坐标, 获取精灵的模型矩阵 乘以 quad 的顶点结果坐标没发生任何改变, 原来是使用了Mat4的transformVector 方法, 然后又发现Mat4的矩阵有重载 Vec3的 *= 运算符,又用该运算符计算结果还是没有任何改变, 有点怀疑人生了。 后来又搜索Mat4中所有和Vec3相关的函数,发现还有个transformPoint 方法。 试了一下居然成功了, 真坑啊, 仔细对比了一下和另外两个函数的区别, 原来transf...
2020-11-16 16:20:48 755
原创 cocos2dx客户端添加使用vscode及插件local lua debug进行调试
1.安装vscode local lua debug插件2.修改mac/SimulatorApp.mm文件updateProjectFromCommandLineArgs:(ProjectConfig*)config 函数将 config->setShowConsole(true); 中的true改为false,就是关闭控制台窗口,否则调试插件不生效3.添加或修改.vscode/launch.json 代码如下,根据实际路径适当修改{ // Use IntelliSe...
2020-10-19 11:48:01 1284
原创 vscode 使用 local lua debugger 调试lua代码
mac 下 需要手动加入 插件所在目录package.path = '/Users/ycmac/.vscode/extensions/tomblind.local-lua-debugger-vscode-0.2.0/debugger;' .. package.pathrequire("lldebugger").start()另外:如果程序运行后动态添加断点不生效, 则需要预先添加断点, 并且在命中一个断点的中断情况下添加断点才能生效优化:当程序代码较大,启动较慢的时候,不要在一开始就打开调试
2020-10-16 17:57:04 868 1
转载 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果原文http://www.cppblog.com/mybios/archive/2009/08/01/91869.html使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果前言:Freetype是一个跨平台、开源的字体渲染器,网上很多文章介绍,本人就不啰嗦了。本文重点在于实现文章标题所属的各种效果,不是Fre...
2019-06-04 10:04:13 1408
转载 通过freetype库实现矢量显示
通过freetype库实现矢量显示本章主要内容如下:1)矢量字体原理 2)使用freetype库实现矢量字体显示1. 矢量字体原理 将汉字的笔划边缘用直线段描述成封闭的曲线,并将线段各端点的坐标经压缩存储,如下图所示:由于每个汉字的笔划不一样,从而每个...
2019-06-03 10:49:43 1580
原创 OpenAL Android版编译笔记
下载openal-soft-master.zip 解压后在 解压文件夹创建build目录, 打开VS2010命令行提示工具,cd 切换到刚才创建的build目录, 输入如下cmake命令: cmake -G"NMake Makefiles" -DCMAKE_TOOLCHAIN_FILE=D:\develope\Android\android-ndk-r17c...
2019-05-14 04:37:28 700
翻译 Mac下编译OpenH264 for android
简介OpenH264 是思科的开源项目,可以编码解码H264,常见的H264编码器还有x264项目。由于OpenH264项目的文档较少,初学的门槛较高,所以整理一些文章来帮忙初学者入门。OpenH264系列文章包括:编译OpenH264 for Windows编译OpenH264 for Android编译OpenH264 for iOS编译OpenH264 for Windows P...
2019-05-13 12:52:23 383
翻译 Android独立工具链 Androlua NDK 开发之路
您可以独立使用 Android NDK 附带的工具链,或将其作为插件与现有 IDE 结合使用。 如果您已有自己的构建系统,且仅需要调用交叉编译器功能以将对构建系统的支持添加到 Android,则这种灵活性非常有用。一个典型用例是在CC环境变量中调用一个需要交叉编译器的开源库的 configure 脚本。注:本页假设您非常了解编译、链接和低级架构。 此外,对于大多数用例来说本页介绍...
2019-05-12 22:38:38 648
原创 Ogre_v1.12.0 最新github版升级总结
Ogre_v1.12.0版中将 图片解码器完全单独抽离出来,仅内置DDS和ETC两种图片解码的支持,不再依赖庞大的FreeImage图片解码库,这意味着更新的核心。编译成dll仅3M多,相比以前8M左右的包体,大大缩小了程序文件,在Android上编译成apk(压缩3M的so)只有接近2M的大小, 同样如果要支持png jpg bmp等多种图片格式,需要以插件的形式加载 Codec_STBI 插...
2019-02-16 11:44:46 243
转载 欧拉交 四元数 旋转矩阵转换
#include <iostream>#include <Eigen/Eigen>#include <stdlib.h>#include <Eigen/Geometry>#include <Eigen/Core>#include <vector>#include <math.h> using nam
2018-10-27 16:22:58 725
转载 vs2013 MFC 添加图片出现的问题 总结:
1.添加bmp文件,可能找不到bmp位图,只显示icon图片,此时需要选择“所有文件”,再导入。(vs2013的一个bug,vs2012不存在)另一种方法是在“画图”中全选位图,复制到vs端新建位图中,但分辨率不高。注:图片控件属性设置 Center Image True,才能改变控件大小2.关键问题:载入bmp后,运行时报错:error RC2108: expected numerical di...
2018-07-15 11:51:27 3085 2
转载 解决curl 静态链接时 提示无法解析的外部符号 __imp__curl_easy_init
无法解析的外部符号 __imp__curl_easy_init下载libcurl的源码,打开lib文件夹下项目,编译为静态链接库。在编译的时候出现问题如下:注:以前在vc2005下用mfc工程并且libcurl用的dll方式没问题,这次vc2008用的sdk并且libcurl用的静态编译,也不知道什么问题引起的HttpWebRequest.obj : error LNK2001: 无法解析的外部符...
2018-06-27 15:28:42 13350 8
原创 场景划分区域
为何要对场景进行区域划分,这个同样是为了优化碰撞检测。因为相对于其他逻辑而言碰撞检测尤其消耗性能,尤其是对网格类的碰撞体进行碰撞检测时性能开销更大。试想一下场景中有1000个物体 如果没有区域划分的情况,物体两两碰撞检测的次数是 1000 * 1000次,而如果游戏帧率达到60,那么这个碰撞检测逻辑就达到了 1000 * 1000 * 60次,而即时采用优化的机制,因为当一个物体与场景中其他物体...
2018-05-02 11:21:10 1084
转载 Ogre中精确到三角面的碰撞检测(使用射线查询)
201404-04Ogre中精确到三角面的碰撞检测(使用射线查询) Jianchihu 编程之美 围观1238次 留下评论 编辑日期:2015-11-13 字体:大 中 小Ogre中的射线查询一般只能侦测到边界盒(AABB),就像你在下面图片看到的,使用下面的代码就能避免这些。初始化射线查询:12345678// create the ray scene query object m_pra...
2018-02-17 12:43:27 625
转载 MyGUI 支持OpenGL ES2 或者 GL3+
MyGUI OpenGL ES2aoikonom09-08-2012 12:56:23I am trying to use MyGUI with OgreGLES2RenderSystem in an Ogre3d4Marmalade (an Ogre fork for the Marmalade framework). At first it did not
2018-02-06 16:43:09 441
转载 Ogre角色换装
作者: huliqingEmail: 31703299@qq.com原文链接:http://www.huliqing.name/article/articleId=41*******************************************************************************************************
2018-01-20 18:28:53 457
原创 Ogre1.10编译Android版
编译系统为Windows 需要装Visual Studio2010 、CMake、NDK (r9d) 注意cmake版本不要太低也不要太高建议2.8 -3.7之间的版本添加环境变量ANDROID_NDK 到ndk的解压目录解压Dependencies在里面建两个文件夹为AndroidBuild/armeabi-v7a 后面可能会对不同CPU进行多个版本编译所以用了两层
2017-12-31 17:07:50 686
原创 实现资源异步加载构想
为了更加平滑场景的加载,做到真正的0等待,或者将进入场景的等待时间降低到最小,我决定实现一套资源异步加载的机制。由于Ogre的逻辑更新不能在主线程之外。我们和渲染相关的游戏逻辑(比如改变模型的位置)都必须在主线程中进行(也可以在其他线程,不过要和主线程进行同步操作,渲染的时候不能更新)。我们引擎中将所有逻辑都限制在主线程中(自己创建线程的除外),这样可以不用考虑多线程的同步问题,以及函数执行先后的
2017-12-17 16:44:25 573
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人