modify skybox

This commit is contained in:
yangxiao 2015-04-01 17:34:57 +08:00
parent 6cd1697240
commit 9540fd590f
2 changed files with 54 additions and 1 deletions

View File

@ -22,6 +22,14 @@
THE SOFTWARE. THE SOFTWARE.
****************************************************************************/ ****************************************************************************/
#include "base/ccMacros.h"
#include "base/CCConfiguration.h"
#include "base/CCDirector.h"
#include "renderer/ccGLStateCache.h"
#include "renderer/CCGLProgram.h"
#include "renderer/CCGLProgramCache.h"
#include "renderer/CCGLProgramState.h"
#include "renderer/CCRenderer.h"
#include "3d/CCSkybox.h" #include "3d/CCSkybox.h"
#include "3d/CCTextureCube.h" #include "3d/CCTextureCube.h"
@ -53,6 +61,17 @@ Skybox::~Skybox()
_texture->release(); _texture->release();
} }
Skybox* Skybox::create(const std::string& positive_x, const std::string& negative_x,
const std::string& positive_y, const std::string& negative_y,
const std::string& positive_z, const std::string& negative_z)
{
auto ret = new (std::nothrow) Skybox();
ret->init(positive_x, negative_x, positive_y, negative_y, positive_z, negative_z);
ret->autorelease();
return ret;
}
bool Skybox::init() bool Skybox::init()
{ {
// create and set our custom shader // create and set our custom shader
@ -68,6 +87,17 @@ bool Skybox::init()
return true; return true;
} }
bool Skybox::init(const std::string& positive_x, const std::string& negative_x,
const std::string& positive_y, const std::string& negative_y,
const std::string& positive_z, const std::string& negative_z)
{
init();
auto texture = TextureCube::create(positive_x, negative_x, positive_y, negative_y, positive_z, negative_z);
setTexture(texture);
return true;
}
void Skybox::initBuffers() void Skybox::initBuffers()
{ {
if (Configuration::getInstance()->supportsShareableVAO()) if (Configuration::getInstance()->supportsShareableVAO())

View File

@ -25,7 +25,10 @@
#ifndef __SKYBOX_H__ #ifndef __SKYBOX_H__
#define __SKYBOX_H__ #define __SKYBOX_H__
#include "cocos2d.h" #include "base/ccTypes.h"
#include "platform/CCPlatformMacros.h"
#include "renderer/CCCustomCommand.h"
#include "2d/CCNode.h"
NS_CC_BEGIN NS_CC_BEGIN
@ -38,6 +41,19 @@ class CC_DLL Skybox : public Node
{ {
public: public:
CREATE_FUNC(Skybox); CREATE_FUNC(Skybox);
/** create skybox from 6 textures.
@param positive_x texture for the right side of the texture cube face.
@param negative_x texture for the up side of the texture cube face.
@param positive_y texture for the top side of the texture cube face
@param negative_y texture for the bottom side of the texture cube face
@param positive_z texture for the forward side of the texture cube face.
@param negative_z texture for the rear side of the texture cube face.
@return A new skybox inited with given parameters.
*/
static Skybox* create(const std::string& positive_x, const std::string& negative_x,
const std::string& positive_y, const std::string& negative_y,
const std::string& positive_z, const std::string& negative_z);
/**texture getter and setter*/ /**texture getter and setter*/
void setTexture(TextureCube*); void setTexture(TextureCube*);
@ -63,6 +79,13 @@ CC_CONSTRUCTOR_ACCESS:
* init Skybox. * init Skybox.
*/ */
virtual bool init(); virtual bool init();
/**
* initialize with texture path
*/
bool init(const std::string& positive_x, const std::string& negative_x,
const std::string& positive_y, const std::string& negative_y,
const std::string& positive_z, const std::string& negative_z);
protected: protected: