Skip to content

Commit 659fbd6

Browse files
committed
Merge branch 'mesh3d' of https://github.com/super626/cocos2d-x into mesh3d
2 parents 056c3e1 + c617bb7 commit 659fbd6

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

cocos/cocos2d.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ THE SOFTWARE.
261261

262262
//3d
263263
#include "3d/CCSprite3D.h"
264+
#include "3d/CCMesh.h"
264265

265266
// Audio
266267
#include "audio/include/SimpleAudioEngine.h"

cocos/renderer/CCGLProgramState.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,14 @@ void VertexAttribValue::setPointer(GLint size, GLenum type, GLboolean normalized
240240
GLProgramState* GLProgramState::create(GLProgram *glprogram)
241241
{
242242
GLProgramState* ret = nullptr;
243-
ret = new (std::nothrow) GLProgramState;
244-
if(!ret || !ret->init(glprogram))
245-
CC_SAFE_RELEASE(ret);
246-
247-
return ret;
243+
ret = new (std::nothrow) GLProgramState();
244+
if(ret && ret->init(glprogram))
245+
{
246+
ret->autorelease();
247+
return ret;
248+
}
249+
CC_SAFE_DELETE(ret);
250+
return nullptr;
248251
}
249252

250253
GLProgramState* GLProgramState::getOrCreateWithGLProgramName(const std::string &glProgramName )

tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,20 @@ void EffectSprite3D::addEffect(Effect3DOutline* effect, ssize_t order)
264264
std::sort(std::begin(_effects), std::end(_effects), tuple_sort);
265265
}
266266

267+
const std::string Effect3DOutline::_vertShaderFile = "Shaders3D/OutLine.vert";
268+
const std::string Effect3DOutline::_fragShaderFile = "Shaders3D/OutLine.frag";
269+
const std::string Effect3DOutline::_keyInGLProgramCache = "Effect3DLibrary_Outline";
270+
GLProgram* Effect3DOutline::getOrCreateProgram()
271+
{
272+
auto program = GLProgramCache::getInstance()->getGLProgram(_keyInGLProgramCache);
273+
if(program == nullptr)
274+
{
275+
program = GLProgram::createWithFilenames(_vertShaderFile, _fragShaderFile);
276+
GLProgramCache::getInstance()->addGLProgram(program, _keyInGLProgramCache);
277+
}
278+
return program;
279+
}
280+
267281
Effect3DOutline* Effect3DOutline::create()
268282
{
269283
Effect3DOutline* effect = new Effect3DOutline();
@@ -282,13 +296,13 @@ Effect3DOutline* Effect3DOutline::create()
282296
bool Effect3DOutline::init()
283297
{
284298

285-
GLProgram* glprogram = GLProgram::createWithFilenames("Shaders3D/OutLine.vert", "Shaders3D/OutLine.frag");
299+
GLProgram* glprogram = Effect3DOutline::getOrCreateProgram();
286300
if(nullptr == glprogram)
287301
{
288302
CC_SAFE_DELETE(glprogram);
289303
return false;
290304
}
291-
_glProgramState = GLProgramState::getOrCreateWithGLProgram(glprogram);
305+
_glProgramState = GLProgramState::create(glprogram);
292306
if(nullptr == _glProgramState)
293307
{
294308
return false;

tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727

2828
#include "../testBasic.h"
2929
#include "../BaseTest.h"
30-
#include "3d/CCMesh.h"
3130
#include <string>
3231

3332
class Sprite3DTestDemo : public BaseTest
@@ -98,6 +97,11 @@ class Effect3DOutline: public Effect3D
9897
Vec3 _outlineColor;
9998
float _outlineWidth;
10099

100+
public:
101+
static const std::string _vertShaderFile;
102+
static const std::string _fragShaderFile;
103+
static const std::string _keyInGLProgramCache;
104+
static GLProgram* getOrCreateProgram();
101105
};
102106

103107
class EffectSprite3D : public Sprite3D

0 commit comments

Comments
 (0)