最近下载了一个PowerVR的SDK,在高手的指点下玩了一把。
感觉PowerVR的Demo的效果还可以,只是没有以前看到的shuiwang的QT下的效果好,不能让人眼前一亮的感觉。不过也没关系,有3D 的Demo,总是可以玩一玩的。
记录以下信息,方便后来者使用:
(1) 下载PowerVR SDK。
网址比较难找:
http://www.imgtec.com/downloads.asp
http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp
下载的时候,挑WIndows版本的下载就可以了。这里的Windows版本,实际上是使用的Win32的模拟器。工程都是Opengl ES的。
(2) VS2008工程--> VS2005。
SDK里边的工程,都是VS2008搭建的,需要转化为VS2005,才可以使用。
这里不要担心,因为,VS2008转化到VS2005,实在太Easy了~
修改方法:
1. 修改.sln文件:
Microsoft Visual Studio Solution File, Format Version 10.00 --> 改为 8.00
# Visual C++ Express 2008 --> 改为 2005
2. 修改.vcproj 文件:
Version="9.00" --> 改为 8.00
(3) 运行模拟器,在PC端查看Opengl ES的效果。
在VS2008的工程修改完之后,使用Win32的PC端的SDK,就可以build出一个exe了。
在高手的指点下,我的第一个exe是:OGLES2IntroducingPFX.exe。
首先,将 libEGL.dll libGLESv2.dll,2个dll,拷贝到 C :/windows/system32/
(源文件位于:D:\PowerVR Insider SDK\OGLES2_WINDOWS_X86EMULATION_2.10\Builds\OGLES2\WindowsX86\Lib)
然后,运行build出的exe就可以了。
如果这个时候看不到效果,有可能是你的显卡不支持。目前的主流显卡,都应该是支持的。NVDIA的显卡,基本都是支持的。
(4) SDK版本:WIN32(PC) -->> WINCE。
当然,这一步是很繁琐的,下边就娓娓道来吧~
换成WINCE的SDK,工程的很多东西,是要修改的,下边记录我工程碰到的一些问题,以备后来者参考:
1. error PRJ0004 : Could not generate command line for the 'VCCLCompilerTool' tool.
攻略:Project Settings->C/C++->General->Debug Information Format = 4, change it to /Zi
2. fatal error C1083: Cannot open include file: 'crtdbg.h'
攻略:Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions,加入变量:_UNDER_CE;UNDER_CE;
3. error C3861: 'bsearch': identifier not found
攻略:在PVRTPrint3D.cpp文件中,加入如下以下代码:
//function: bsearch.
void *bsearch(const void *key,
const void *base,
size_t num,
size_t width,
int ( __cdecl *compare ) ( const void *, const void *))
{
void * pRet = NULL;
size_t i = 0;
for (i = 0; i < num; i++)
{
if (!compare((unsigned char*)key + width * i, (unsigned char*)base + width * i))
{
pRet = (unsigned char*)base + width * i;
break;
}
}
return pRet;
}
void *lfind(const void *key,
const void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *))
{
return bsearch(key, base, *num, width, compare);
}
4. PVRTPrint3D.cpp(608) : error C2660: 'vswprintf' : function does not take 4 arguments
攻略:
vswprintf(s_Text,/* MAX_LETTERS+1,*/ pszFormat, args);
或者使用,vswprintf_s(s_Text, MAX_LETTERS+1, pszFormat, args);
5. error C2731: 'WinMain' : function cannot be overloaded
攻略:Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions,加入变量:_UNICODE;UNICODE;
6. fatal error LNK1181: cannot open input file 'OGLES2Tools.lib'
攻略:Configuration Properties -> Linker -> General -> Additional Library Directories,设置为:
..\..\..\..\..\Builds\OGLES2\WinCE\Lib; ..\..\..\..\..\Tools\OGLES2\Build\WindowsVC2008\Debug
(需要将WINCE平台的lib,先copy到\WINCE\lib下,然后再设置路径;
OGLES2Tools工程的output路径先设置为:$(ProjectDir)$(ConfigurationName)
)
7. fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'THUMB'
攻略:Configuration Properties -> Linker -> System-> SubSystem,设置为:WindowsCE。
8. OGLES2Tools.lib(PVRTResourceFile.obj) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'THUMB'
攻略:原因是WINCE的工程,链接了win32的lib。重复第6个step,设置为对应build生成的'OGLES2Tools.lib'即可。
(5) 下边,就是见证奇迹的时刻。
把编译生成的exe,放到支持Opengl ES的WINCE平台上,Run。(ESC可以退出)
转载请说明出处,谢谢~