OpenGL + C++ + Java
OpenGL + C++ + Java
这个组合有一点奇怪,因为要实现在
opengl
中播放视频,所以不得不有这样奇怪的组合。上层的
MediaPlayer
封装的基本上是针对
android UI
的框架,如果想在
opengl
中显示,估计难度很大。另外,很多开源的
opengl
的游戏基本上都是
C++
编写,所以这个体系的作用还是很大的,之所以需要
java
,因为上层的很多例如触摸、重力感应,这样的东西,
android
是以
java
实现的,底层的根本看不到,这样的组合起来,充分的利用每一个层次的优点,最大效率提高用户体验。
我们首先会简单的测试一下
opengl
立方体例子,然后我们实现在
native
层上面的绘制,如何使用
jni
来传递。最后我们简单的说一下使用自带的
android
封装的
opengl
接口
api
有什么样的限制。
Google
提供的
api
是
java
的
api
,对于
java
开发者来说,这是好消息,对于
C++
开发者来说,就会有很大的麻烦。现在主流的游戏引擎、游戏算法基本上都是
C/C++
实现。
我们纯粹利用
C/C++
来写
OpenGL
的应用程序的时候,基本流程如下,初始化
EGL
,选择配置,然后选择
Display
,然后创建
Surface
,之后就是
DrawFram
和
Swap
了。
Google
很聪明的给这个流程进行了一次封装,封装成这样的几个类,大致的代码如下:
首先是
EGL
的相关操作:
public
class
EglHelper {
public
EglHelper() {
}
/**
*
Initialize
EGL
for
a
given
configuration
spec.
*
@param
configSpec
*/
public
void
start(
int
[] configSpec){
/*
* Get an EGL instance
*/
&
相关文档:
C/C++位操作
一、传统的C方式位操作:
1.基本操作:
使用一个unsigned int变量来作为位容器。
2.操作符:
| 按位或操作符:result=exp1|exp2;当exp1和exp2中对应位中至少有一个为1时,result中对应位为1,否则为0。
& 按位与操作符::result=exp1&exp2;当exp1和exp2中对应位全为1时 ......
用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字,如果我想引用一个全局变量或
函数a,我只要直接在源文件中包含#include<xxx.h>
(xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??这个问题一直也是似是而非的困扰着我许多年了,今天上网狠狠查了一下总算小有
所获了:
头 ......
和在IDE中编译相比,命令行模式编译速度更快,并可以避免被IDE产生的一些附加信息所干扰。本文将介绍微软C/C++编译器命令行模式设定和用法。 1、设置环境变量: PATH=C:\Program Files\Microsoft Visual Studio 8\VC\bin INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\include LIB=C:\Program Files\Microsof ......
用此法前确保你的C源代码是无错的~~
解决办法:
C:
在主函数后加getch()或ch=getch(); (让程序等待你按下任意键,再继续执行下面的语句)
C++:
1.包含头文件时: #include <stdlib.h>/*header file,因为在stdlib.h头文件中定义了system()函数*/
2.在最后一句加上:system("PAUSE ......
fread函数和fwrite函数
1.函数功能
用来读写一个数据块。
2.一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数 ......