Files
LayaNative2.0/Conch/source/conch/JCConchRender.h
T
2020-11-11 16:17:13 +08:00

89 lines
4.0 KiB
C++

/**
@file JCConchRender.h
@brief
@author James
@version 1.0
@date 2016_5_12
*/
#ifndef __JCConchRender_H__
#define __JCConchRender_H__
#include <JCIGLRender.h>
#include <fontMgr/JCFreeTypeRender.h>
#include <resource/JCFileResManager.h>
#include <misc/JCWorkSemaphore.h>
#include <Performance/JCPerfHUD.h>
#include <Manager/JCOrderResManager.h>
#include <LayaGL/JCLayaGL.h>
#include "RenderEx/JCRegister.h"
#include <misc/JCWorkerThread.h>
#ifdef __APPLE__
#include "IOSFreetype/JCIOSFreeType.h"
#endif
#include <atomic>
namespace laya
{
enum GL_CAPS
{
GLC_NONE = 0,
GLC_TEXTURE_COMPRESSION_PVR = 1 << 1,
GLC_TEXTURE_COMPRESSION_ETC1 = 1 << 2,
GLC_TEXTURE_COMPRESSION_ETC2 = 1 << 3,
GLC_NOPT = 1 << 4,
GLC_TEXTURE_TPG = 1 << 5,
GLC_INSTANCEING = 1 << 6,
};
class JCFileSource;
class JCConchRender : public JCIGLRender
{
public:
JCConchRender(void* pFileResManager,JCArrayBufferManager* pArrayBufferManager, JCRegister* pRegister,JCWebGLPlus* pWebGLPlus);
~JCConchRender();
void initOpenGLES();
void onGLReady();
void setRenderData(JCArrayBufferManager* pJSArrayBufferManger, JCArrayBufferManager::ArrayBufferContent* pSyncBufferList,int nSyncCount, JCCommandEncoderBuffer*& pRenderCmd,double& fDelay,double& fFPS);
void setInterruptFunc(std::function<void(void)> pFunc);
void syncArrayBuffer(JCArrayBufferManager* pManager, JCArrayBufferManager::ArrayBufferContent* pSyncBufferList,int nSyncCount);
void syncDeleteArrayBuffer(JCArrayBufferManager* pJSManager);
int renderFrame(long nCurrentFrame, bool bStopRender);
void clearAllData();
void willExit();
void setAssetRes(JCFileSource* pAssetRes);
void onTouchStart(double fTime);
private:
void _clearAllData();
public:
JCWorkerThread* m_pRenderThread;
float m_fShowPerfScale; ///<是否显示性能测试
long m_nFrameCount; ///<frameCount
bool m_bStopRender; ///<这个变量仅仅为了IOS使用的,因为IOS主线程(UI线程)和渲染线程是一个,所以增加了这个标记
bool m_bExit; ///<是否退出
JCImageManager* m_pImageManager; ///<Image管理器
JCIDGenerator* m_pIDGenerator;
JCIDGenerator* m_pProgramLocationTable;
JCLayaGL* m_pLayaGL; ///<layaGL
JCFileResManager* m_pFileResManager; ///<FileResManager 外部设置的
JCWorkSemaphore m_kRenderSem; ///<与js线程同步的对象。
JCPerfDataRender m_kPerfRender; ///<性能测试
JCArrayBufferManager* m_pArrayBufferManager; ///<ArrayBufferManager
JCRegister* m_pRegister;
JCCommandEncoderBuffer* m_pCurrentRenderCmds; ///<渲染指令流
private:
JCFileSource* m_pAssetsRes; ///<读取文件用的fileSource
double m_nFPS;
double m_nCountDelayTime;
double m_nDelayTime;
std::function<void(void)> m_pInterruptFunc;
float m_fMouseMoveTime;
#ifndef __APPLE__
std::atomic<bool> m_bClearAllData{ false };
#endif
};
}
//------------------------------------------------------------------------------
#endif //__JCConchRender_H__
//-----------------------------END FILE--------------------------------