- 博客(47)
- 资源 (1)
- 收藏
- 关注
原创 VS 引用,外部依赖项,资源文件
引用:决定了项目的生成顺序。暂且知道有两个用处。 1.用于决定生成整个解决方案的项目顺序:如果不引用Dll1,点击生成整个解决方案时,项目生成顺序会是ConsoleApplication2.1,Dll1。结果是报错。因为ConsoleApplication2.1使用了Dll1,可Dll1还没有生成,所以ConsoleApplication2.1找不到Dll1的lib或dll文件。像这种情况很多公司常见,这时候往往会多生成几遍解决方案,错误会逐渐减少,直至最后成功生成所有项目。 ...
2020-05-31 18:48:41
3672
原创 旧版OpenGL 与 新版OpenGL
分割线:OpenGL3.0。3.0之前,所有OpenGL版本都与早期版本完全向后兼容。针对OpenGL 1.1编写的代码可以在OpenGL 2.1实现中很好地执行。3.0,引入了废弃functionality的想法。许多OpenGL函数被声明为已弃用,这意味着用户应避免使用它们,因为它们可能会从更高版本的API中删除。3.1,OpenGL 3.1删除了OpenGL 3.0中几乎弃用的所有功能。这包括固定功能管道。 但是,由于许多实现仍然支持那些不推荐使用和已删除的功能,因此...
2020-05-25 23:09:52
3956
原创 VS2017中,把鼠标移动到glfwCreateWindow()上面,会直接卡死
问题:VS2017中,在使用GLFW的时候,把鼠标移动到glfwCreateWindow()上面,会直接卡死。原因:后来从网上找到原因,是该函数的注释太多了。处理方法:用键盘把光标移动到glfwCreateWindow()上,然后快捷键ctrl+F12跳转到函数声明处,在函数上方加一空行,与注释隔开,保存。搞定!参考:怎么解决vs2017一把鼠标放在Mat类上就卡死的问题...
2020-05-21 17:16:52
322
原创 GLUT, freeGLUT, GLFW, GLEW, GLAD 关系与区别
GLUT:(来自百科)(OpenGLUtilityToolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O。是专为构建中小型OpenGL程序。虽然GLUT是适合学习OpenGL和开发简单的OpenGL应用程序。GLUT并不是一个功能全面的工具包所以大型应用程序需要复杂的用户界面最好使用本机窗口系统工具包。所以GLUT是简单的、容易的、小的。定义以及控制视窗侦测并处理键盘及鼠标的事件以一个函数呼叫绘制某些常用的立体图形,例如长方体、球、以及犹他茶壶(实心或只有骨架..
2020-05-21 10:02:51
6312
原创 包含目录、附加包含目录、库目录、附加库目录、附加依赖项、动态库、静态库
一、先说包含目录包含目录 与 附加包含目录 的区别是 检索顺序 不同。The compiler searches directories in the following order:(来自MSDN,一定要看英文)If specified using a#include directivein double-quote form, it first searches local directories.The search begins in the same director...
2020-05-19 09:11:36
718
原创 stdafx.h作用以及include中为何iostream必须放在stdafx.h之后?
我们先来了解下stdafx.h,然后才方便了解为何iostream要放在stdafx.h之后。一、先说stdafx.h(来自:C++头文件的包含顺序研究) 在Visual Studio环境下开发我们发现几乎每个cpp文件都要包含stdafx.h这个文件,而且要把它放在最前面的位置,否则就会出错。这是为什么呢? 原来Visual Studio采用一种预编译的机制。要了解预编译机制,先介绍一下预编译头。所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放...
2020-05-17 23:03:40
1227
原创 VisualStudio2017,配置管理器,平台
之前虽然与配置管理器天天相见,却是无缘对面不相识,惭愧!今天就来了解一下。如果想要多了解一些x86,x64,Win32的信息,可见前一篇文章VisualStudio,配置管理器,目标平台,x86,x64,win32 简介。以下以C++控制台项目为例,亲测。图1与图3的配置管理器打开的是同一个,即图2。图2,是当前解决方案的配置。是配置管理解决方案与项目的整体总体配置,所以才叫做“配置管理器”。“活动解决方案配置”默认情况下有Debug和Rele...
2020-05-17 22:44:37
5045
原创 VisualStudio,配置管理器,目标平台,x86,x64,win32 简介
一、先来说一下普通概念平台:我们常说的跨平台,通常是指操作系统和cpu的组合。微处理器:微处理来器是微型处理器的统称! 比如CPU、显卡的GPU、手机的处理源器,以及一些智能家电的处理器。x86:是一种架构,全称The X86 architecture。是微处理器执行的计算机语言指令集,泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构。最早的8086处理器于1978年由Intel推出,为16位微处理器。Intel在早期以80x86这样的数字格式来命名处理器...
2020-05-17 20:07:34
20400
1
原创 为何JVM不一次性全部编译?
个人认为最关键的是jvm无法做到静态编译java的动态语义。以前也不是不能做,而是觉得有必要去做的人没能力或者种种原因没有去做,而有能力去做的觉得没有必要。毕竟掺杂商业的事情我也不甚了解。这东西随着社会的发展,总会有人去做,这不,华为的方舟编译器就搞定了,不过要所有厂商APP重新编译也是一个耗时间的事儿,牵扯到生态圈以及各种复杂关系。再就是,解释执行,占用空间特别小,适合某些空间紧凑的环境。要知道源码编译成本地二进制机器码,体积是以10x级数的倍增。以上仅个人拙见,很多原因我也是不甚明了,好.
2020-05-10 17:15:15
1252
原创 jvm 的 client 与 server 较为详细区别
client 与 server 是两个不同的编译器。这些编译器适合于客户端和服务器的独特性能特性。这些差异包括编译内联策略和堆默认值。client:比较简单,相比server模式许多更复杂的优化,它只需要较少时间来分析和编译一段代码。 它为应用程序和小程序提升了运行时性能。减少了启动时间和内存占用,并对GUI做了优化,以适合客户端环境。server:比较复杂,先解释执行,然后jvm统计执行热点,将这些热点代码仔细优化编译成本地代码,然后执行本地代码,当这个热点不再是...
2020-05-10 11:20:07
2028
转载 arm 会取代 x86 吗
arm的是risc指令集,作为精简指令集,本身功能就不全面,优势是高效,低功耗,属于小而精,目前主要在手机,平板方面占尤。x86是cisc指令集,虽然累赘但功能齐全,属于大而全,劣势是功耗大。目前主要在桌面pc占优。从两者特点看,很难直接竞争,双方适用的场合都不相同。x86设备能做到的事,arm设备还不能完全做到,比如ipad就不能取代你家里的电脑。从系统看,基于arm的是安卓和ios,wp,塞班等移动系统,而基于x86的是windows和mac。也有跨平台的linux,unbuntu,meego等。
2020-05-09 18:28:39
1878
原创 C能不能跨平台,而java为什么可以?
C语言:可以说是也不是计算机识别0和1,有些代表指令(有固定含义和编码),是芯片能识别的;另一些是数据,不同程序数据不同。汇编的由来:比如“+”,是cpu的可识别的固定编码(比如0xa90dff,随便写的),为了方便书写和记忆,用助记符add表示,这就是汇编的由来。高级语言:随着程序规模变大,汇编台式太复杂,于是有了高级语言,比如C。编译过程:高级语言->汇编语言->二进制。指令集:那些类似add之类的助记符,以及汇编的语法格式,称之为指令集。...
2020-05-09 17:15:15
706
转载 JIT 简易原理
转载:https://zhuanlan.zhihu.com/p/64713140JIT是“Just In Time”的首字母缩写。每当一个程序在运行时创建并运行一些新的可执行代码,而这些代码在存储于磁盘上时不属于该程序的一部分,它就是一个JIT。我认为JIT技术在分为两个不同的阶段时更容易解释:阶段1:在程序运行时创建机器代码。阶段2:在程序运行时也执行该机器代码。第1阶...
2020-05-08 17:10:16
470
原创 编码方式部分信息整合:Unicode、UCS-2/4、UTF-8/16/32、GB2312、GBK
ISO:国际标准化组织(International Organization for Standardization,ISO)简称ISO。负责目前绝大部分领域(包括军工、石油、船舶等垄断行业)的标准化活动。------------------UTF:(Unicode Transformation Format)通用转换格式 或 Unicode字符集转换格式。属于Unicode Sta...
2020-05-07 23:44:50
912
1
转载 __declspec 英文 缩写
declaration specification来自:https://blog.csdn.net/nokianasty/article/details/5993711
2020-04-30 10:34:38
220
原创 as3 vertexBuffer 渲染效率
最近在优化项目性能,偶然发现一个有关效率的问题:同一帧中:对于某个vertexBuffer3D,如果已经渲染完毕,再对vertexBuffer3D调用uploadFromVector,耗时会特别长;所以,同一帧中,在对某个vertexBuffer3D渲染之前,一定要先把该buffer相关的upload全都调用完毕。case:项目优化之前的情况是:地图和角色合用了
2016-12-26 17:12:06
758
原创 flash registerClassAlias()
1.ByteArray::writeObject() 只能存储对象中的属性2.对于自定义对象,如var ani:Animal = ByteArray::readObject() as Animal,会出现异常,因为返回的对象只包含了属性,不知道是属于哪个类,也没有包含方法3.对于自定义对象,如果想用readObject()无损读取,需要用到registerClassAli
2016-12-06 19:18:26
544
原创 flash as3 Texture IndexBuffer3D 泄漏
texture如果upload之后不dispose,只是texture=null会有泄漏(内存、显存都有)1.首先,根据API,texture最大上限是350M2.个人PC测试数据:代码:private function render_2():void { var arr:Array = new Array(); try { for
2016-11-30 14:34:10
557
原创 chrome flash 安全沙箱冲突 SecurityError: Error #2148
安全沙箱冲突 SecurityError: Error #2148:1.一般浏览器这种问题,一般是在控制面板->Flash Player->高级->受信任位置,添加相应目录或者文件,如图中“1”所标出的位置。2.但是谷歌浏览器特殊,看到上图中“2”标出的位置,这就是原因所在。点蓝色字体打开连接,在浏览器中找到如下图链接并打开:3.在下图中标出的位置添
2016-10-31 11:25:04
2326
原创 python Image 查看图片xinx
from PIL import Imageimg = Image.open("icon_512.png")print img.formatprint img.sizeprint img.modewidth = img.size[0]height = img.size[1]for w in range(width): for h in range(height):
2016-10-18 16:22:49
763
原创 stage3d 限制
AGAL limits: 200 opcodes per program.Draw call limits: 32,768 drawTriangles() calls for each present() call.¹350 MB is the absolute limit for textures, including the texture memory required fo
2016-10-14 18:02:00
248
原创 Stage3D AGAL Alpha test / if
1.AGAL 没有alpha test,可以在Fragment shader中用kil来代替,kil是过滤掉元素小于0的片元,可以把alpha - 0.000001来过滤alpha = 0的片元2.原来AGAL2有了if语法,挺好用:
2016-10-13 20:20:48
334
原创 SwapBuffers glutSwapBuffer glFlush glFinish
虽然一直用,不然发现理解不够,抽了个空,花费几个小时,整理了一下,若有错误,还望诸位多多指教1.glFlush:从表面上看,就是刷新并清空缓存,只不过这里刷新的是opengl指令所在的缓存!也就是说opengl的指令会放在缓存中,最后一并执行(显然一条一条的执行会很慢),不过glFlush是异步的,并不会 等待所有指令都执行完毕才返回。2.glFinish:作用跟glFlush
2016-09-13 14:50:59
2299
原创 GL_CLAMP GL_CLAMP_TO_EDGE GL_CLAMP_TO_BORDER
借鉴:1.GL_TEXTURE_WRAP系列参数的取值2.CLAMP, CLAMP_TO_EDGE and CLAMP_TO_BORDER3.Difference of GL_CLAMP and GL_CLAMP_TO_EDGE以下属于个人理解,如有错误或疑问,还望大家共同讨论:1.GL_CLAMP :在边界处双线性处理,但是很多硬件不支持边界处理,故此效果跟GL_CLAMP_
2016-09-12 11:06:50
7171
1
原创 jdk sdk ndk androidStudio 注意
1.sdk不分32/64位2.如果在64位系统上使用androidStudio,一定要用64位jdk(androidStudio没有所谓的32/64安装包,安装时应该是根据系统自动选择32或者64【个人认为】,因为本人本系统64位,jdk时32的,本来安装androidStudio也没在意,结果安装后提示我安装64位的jdk)3.ndk路径不该出现汉字时必须的,再者不应该出现“空格”
2016-09-11 18:36:21
596
原创 opengl skybox shader xyww
opengl 天空盒vertex shader 中常用的一个技巧是:gl_Position = (u_MVP * vec4(a_position, 1.0)).xyww。刚开始觉得xyww挺合理,后来一想,觉得有问题,如果所有点的depth=1,如果先draw正对相机的面,再draw背对相机的面,岂不是把前面draw的覆盖了。。。但事实上大家都在用,肯定没错,为此纠结了好久。后来在一篇文章中
2016-09-07 21:04:39
854
原创 强转 static_cast dynamic_cast reinterpret_cast 疑难杂症
总结了一些疑问,如果有什么错误,还望大家指正~1.static_cast和强转有什么区别? (1)相同:首先都是在编译时完成 (2)区别:前者更安全,如: class A{} class B{} [1]A* pA = (A*)new B;-----编译通过 [2]A* pA = static_cast(new B)编译失败 2.为什么不是所有static_cast
2016-07-27 18:28:53
431
原创 bindPose(绑定姿势) 理解
1.首先得多谢一吧主提供了这个资源(http://forum.unity3d.com/threads/some-explanations-on-bindposes.86185/),省去了我大麻烦2.该资源的代码最开始的注释部分://The Bind Pose Matrices allow a raw vertex of the mesh (in local coordina
2016-07-15 19:21:15
8055
原创 c++ 循环引用
1.大家都知道:a引用b,b引用a,最后谁也没有被释放。大家都这样说,但是我就是不理解,走上邪路了2.下看代码(代码来自http://blog.csdn.net/jfkidear/article/details/9034455)#include class B;class A{public: ~A() { printf("delete A");
2016-07-08 14:02:46
1226
原创 c/c++函数传参 坑死我了
大家都知道c/c++函数参数入栈顺序是从右到左的,有时候不注意容易犯错:看这一行代码:“Quaternion quat(byteArray.readFloat(), byteArray.readFloat(), byteArray.readFloat(), byteArray.readFloat())”解释:byteArray.readFloat()这个用来不断读取文件内容。
2016-07-06 15:20:28
536
原创 Matrix3D rawData
帮助文档中对Matrix3D.rawData的Vector对象做了如下说明:“它一个由16个数字组成的矢量,其中每四个元素可以是一个行或列的4× 4矩阵。”但事实上:Vector中的每四个元素是一列mat = 0, 1, 2, 34, 5, 6, 78, 9, 10, 1112, 13, 14, 15他的rawData = {
2016-06-16 11:25:59
575
原创 Glew 配置 win7 64位 注意
首先说明两个文件夹SysWOW64和System32:1.在win764位系统中,System32是给64位用的(即:正常的。就像win732位系统中System32的作用一样);2.而SysWOW64是特殊的,是用来给win764位系统中的使用32位的东西提供的配置(win7 64位):dll文件要放在System32文件夹下,而不能放在SysWOW64文件夹下
2016-05-03 17:59:46
2055
1
原创 char* 拼接
char* a = "1234";char* b = "sb";方法一:std::stringstream ss;ss << a << b;std::string str = ss.str();结果:“1234sb”方法二:std::string str = std::string(a) + std::string(b);结果:“1324sb”
2016-04-18 20:25:01
2985
原创 v8 Convert JSObject To String
获取对象的属性、属性值、函数、函数体。但是函数体,js自建对象可以,c++创建的对象不可以string g_convertJSObjectToString(const v8::Local& obj) { string result = "Object {"; v8::Local propertyNames = obj->GetPropertyNames(); for
2016-04-18 19:54:20
749
原创 v8 windows vs 中文乱码
1.v8中string都是utf8格式,Local v8Str = String::NewFromUtf8(...); windows下默认系统编码是gb2312,vs中默认使用win系统的编码格式,也是gb23122.所以要做的是一开始把js脚本的字符串转成utf8格式,然后如果要把js脚本执行结果输出到控制台,再把直接结果转成gb2312格式,转换函数如下:char* En
2016-04-18 16:38:10
1096
原创 AngularJS 依赖注入
1.依赖注入,个人理解可以叫 大模块包含小模块在输入框中尝试输入:姓名: {{stdname}}{{stdage}}{{tchname}}{{tchcourse}}angular.module("myapp", ['Service']).controller("myCtrl", funct
2015-12-17 15:05:55
436
原创 一个页面有多个ng-app 注意几点
1.一个页面会自动加载第一个ng-app2.如果想启动其它ng-app,需要通过下列代码的红色部分来启动,此时一共启动了2个ng-app3.特别注意:代码红色部分一定要放在最后,比如,不能放在蓝色代码之前,否则会出错4.一个ng-app可以有多个controller5.$scope的范围局限于每一个controller中ng-controller
2015-12-16 14:53:50
10200
2
转载 php 图片压缩
http://www.jb51.net/article/52380.htm/** * desription 压缩图片 * @param sting $imgsrc 图片路径 * @param string $imgdst 压缩后保存路径 */function image_png_size_add($imgsrc,$imgdst){ list($width,$he
2015-12-10 16:30:02
562
原创 c# 弹出带返回值的对话框
winform:屏幕宽度:Screen.PrimaryScreen.Bounds.Width;屏幕高度:Screen.PrimaryScreen.Bounds.Height;using Microsoft.VisualBasic;String PM = Interaction.InputBox("请输入密码", "输入密码", "", Screen.PrimaryScreen.
2015-12-01 15:25:07
1921
原创 c# wince datatable保存成csv
1. “sb.Append("\"" + table.Columns[i].ColumnName + "\"" + ",");” 如果这里的前后两边不添加“\"”,就会乱,但是不知道为什么!!!!!如果有幸被哪位高手看到,就请帮帮忙吧public static void saveDataTableToCsv(System.Data.DataTable table, string file)
2015-11-27 17:33:51
522
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人