Shader程序无法在Cocos2d 2.2 Obj.C iOS 12中运行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shader程序无法在Cocos2d 2.2 Obj.C iOS 12中运行相关的知识,希望对你有一定的参考价值。
码:
[lightRender beginWithClear:0 g:0 b:0 a:0];
self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionColor];
CC_NODE_DRAW_SETUP();
CGPoint vertices[3];
ccColor4F colors[3];
CGPoint mid = BODY_POSITION(cursor.body);
float radius = LIGHT_RANGE * lightRadius; // - (CCRANDOM_0_1() * LIGHT_RANGE * .015);
float initialAlpha = .7f;
for (int i = 0; i < LIGHT_PRECISION; i++)
{
int nVertices = 0;
float angle = 2*M_PI/LIGHT_PRECISION * i;
float nextAngle = 2*M_PI/LIGHT_PRECISION * (i+1);
int n = i + 1;
if (n == LIGHT_PRECISION)
n = 0;
vertices[nVertices] = ccpAdd(mid, ccp(cosf(angle) * radius * lightLength[i], sinf(angle) * radius * lightLength[i]));
colors[nVertices++] = (ccColor4F){1, 1, .9, initialAlpha * (1 - lightLength[i])};
vertices[nVertices] = ccpAdd(mid, ccp(cosf(nextAngle) * radius * lightLength[n], sinf(nextAngle) * radius * lightLength[n]));
colors[nVertices++] = (ccColor4F){1, 1, .9, initialAlpha * (1 - lightLength[n])};
vertices[nVertices] = mid;
colors[nVertices++] = (ccColor4F){1, 1, .8, initialAlpha};
ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position | kCCVertexAttribFlag_Color);
glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_FLOAT, GL_FALSE, 0, colors);
glBlendFunc(CC_BLEND_SRC, CC_BLEND_DST);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)nVertices);
}
[lightRender end];
CC_NODE_DRAW_SETUP代码:
#define CC_NODE_DRAW_SETUP()
do {
ccGLEnable( _glServerState );
NSAssert1(_shaderProgram, @"No shader program set for node: %@", self);
[_shaderProgram use];
[_shaderProgram setUniformsForBuiltins];
} while(0)
如何使用Cocos2d 2.2 Obj.C项目修复ios12中的着色器代码?如果我在iOS 7模拟器中运行它可以完美地实现..相同的代码在iOS 12中不起作用
答案
修复了Cocos2d中的着色器问题。
在上面的代码中,主要问题是CGFloat ...将其转换为所有顶点的float。
我还从Cocos2d-x获取着色器相关文件,并将其转换为obj.C用于Cocos2d。
现在所有着色器都在Cocos2d v2.2 Obj.C iOS 12,iPhoneX / XR / XSMax中完美运行..
快乐的编码!干杯:)
以上是关于Shader程序无法在Cocos2d 2.2 Obj.C iOS 12中运行的主要内容,如果未能解决你的问题,请参考以下文章
无法为任何 cocos2d 应用程序创建 ipa,即使是 helloworld 默认应用程序
Cocos2d iphone 应用程序在实际 iphone 上运行异常