没想到openGL ES 2.0和1.x之间的差别那么大,而市面上介绍2.0的资料又很少。
说说问题:怎么向shader中的struct传数据?
直接说答案:struct不提供一次全部赋值的方法,只能一个一个数据传入。
比如:
struct Blur{
int a;
float b;
}
uniform Blur blur;
那么就需要向
blur.a和blur.b中一个一个赋值数据。
GLES20.glUniform1i(GLES20.glGetUniformLocation(mProgram,"blur.a"),123);
GLES20.glUniform1f(GLES20.glGetUniformLocation(mProgram,"blur.b"),123.456);
还有一件事,本以为GLSL的语法在android和iOS上都一样,结果,有差别:
在iOS中变量名和方法名可以共用,在android中不可以共用。否在在useProgram的时候会报invalidate_operation的错误。
多么坑爹的差别啊!
关于错误码,咱上网搜了很久错误码都没找到代表什么意思。结果很SB,错误码写在了GLES20的常量中。如果你能看到源代码,他们还被写在了一起。
再补充一条,关于图像加载。
原以为加载完图像了会自动分配到sampler2D上,结果不是这样的,需要自己给sampler2D分配编号:
fragmentShader:
uniform sampler2D pic1;
uniform sampler2D pic2;
如果不分配编号的话,加载的就都是一个图像,苦逼。
java:
int th1 = GLES20.glGetUniformLocation(mProgram, "pic1");
GLES20.glUniform1i(th1,0);
int th2 = GLES20.glGetUniformLocation(mProgram, "pic2");
GLES20.glUniform1i(th2,1);
[2012-08-06]
懒得再写新的文。OpenGL的都在这里说吧。要吐槽,绝对得吐。不同的机型对Opengl的支持怎么就这么不一样!
我用自己的One X运行原型程序,结果都正确。然后换到同事的Desire S上,尼马崩了。而且崩在GLSL代码中。好吧,你也知道GLSL拿来debug是很需要一些技巧的。我的方法就是,拿输出图像作为debug的输出。比如当一个bool是真的时候,将结果图像输出为红色,否则就是蓝色。这么折腾来折腾去,发现了坑爹的原因:
某些机型在return之后不能再有代码了。在if判断部分return就会有问题。
这尼马是不是又得回到汇编时代做标记去!结果只能在if-else中设置不同的标记变量,最后一起做返回。不知到以后还会出现什么坑爹的问题~~苦笑
分享到:
相关推荐
软件dome,struct2.0软件dome,struct2.0软件dome,struct2.0软件dome,struct2.0
struct2.0 jar文件包part5 struct2.0 jar文件包part5 struct2.0 jar文件包part5
struct2.0 jar文件包part3 struct2.0 jar文件包part3 struct2.0 jar文件包part3
struct2.0 jar文件包part4 struct2.0 jar文件包part4 struct2.0 jar文件包part4
struct2.0 jar文件包part2 struct2.0 jar文件包part2 struct2.0 jar文件包part2
Spring2.0对Struts2.0的整合,内含一个小示例,带清晰注释
网上整理的struct2.0学习资料
struct1.2+ hibernate3.0+spring2.0 例子,主要是有JAR包和配置文件
struct讲解 文本文件, 有实例, 讲解较细,感觉不错,觉得好的顶下, 传智播客课程 的教程
清晰的介绍了Struts 2.0框架的工作流程,Action线程安全,程序入口,配置文件。
est2.1+Struct2.0+Spring2.0+hibernate3.1+oracle10g的登陆例子,在oracle下新建表USERINFO
j2ee源码,struct2.0框架,IBMwebshper工具。
赠送jar包:mapstruct-1.2.0.Final.jar; 赠送原API文档:mapstruct-1.2.0.Final-javadoc.jar; 赠送源代码:mapstruct-1.2.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.2.0.Final.pom; 包含翻译后...
赠送jar包:mapstruct-1.3.1.Final.jar; 赠送原API文档:mapstruct-1.3.1.Final-javadoc.jar; 赠送源代码:mapstruct-1.3.1.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.3.1.Final.pom; 包含翻译后...
赠送jar包:mapstruct-1.1.0.Final.jar; 赠送原API文档:mapstruct-1.1.0.Final-javadoc.jar; 赠送源代码:mapstruct-1.1.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.1.0.Final.pom; 包含翻译后...
C_C++中typedef_struct和struct的用法。
很全的struts2标签库,对想要学习struts2框架的很有帮助,是中文教程和英文的api
在Netbeans中使用Struts2.0+Spring2.5+Hibernate框
赠送jar包:mapstruct-1.3.1.Final.jar; 赠送原API文档:mapstruct-1.3.1.Final-javadoc.jar; 赠送源代码:mapstruct-1.3.1.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.3.1.Final.pom; 包含翻译后...
struct typedef struct 区别