gpt4 book ai didi

ios - 着色器程序在 Cocos2d 2.2 Obj.C iOS 12 中无法运行

转载 作者:行者123 更新时间:2023-12-03 20:03:28 26 4
gpt4 key购买 nike

代码:

  [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 中获取了与着色器相关的文件,并将其转换为 Cocos2d 的 obj.C。

现在所有着色器都可以在 Cocos2d v2.2 Obj.C iOS 12、iPhoneX/XR/XSMax 中完美运行..

祝你编码愉快!干杯:)

关于ios - 着色器程序在 Cocos2d 2.2 Obj.C iOS 12 中无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com