前一段时间搞清楚了cocos2dx的渲染流程 今天好像有遗忘了不少细节 果然好记性不如烂笔头 还是不偷懒几下
渲染流程记录:
create (texturecache:addimage ,ccimage:initWithImageFile initWithImageData,texture2d:initWithImage) inittexture settexture&&setTextureRect( updateBlendFunc() setOpacityModifyRGB updateColor updateQuad setTextureCoords setVertexRect setContentSize) 设置完数据 当一帧过去directory drawScene visit进行draw draw把当前对象加入渲染队列 最后render进行渲染画出 render根据不同队列类型渲染的流程网上可以找到
还有用自己的shader一定要绑定的a_position,a_color,a_texturecoord应该是在texture2d里面用到
另外之前练习的为了方便查看弄出console也记录下 免得以后到处找
main.cpp
#include "main.h"
#include "AppDelegate.h"
#include "cocos2d.h"
USING_NS_CC;
#define USE_WIN32_CONSOLE
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
#ifdef USE_WIN32_CONSOLE
AllocConsole();
CreateConsoleScreenBuffer(GENERIC_WRITE|GENERIC_READ,0,0,CONSOLE_TEXTMODE_BUFFER,0);
/*HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD size; size.X = 512 ; size.Y = 512;
SetConsoleScreenBufferSize(hOut,size);*/
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
HANDLE input = GetStdHandle(STD_INPUT_HANDLE);
::SetConsoleMode(input,ENABLE_ECHO_INPUT|ENABLE_PROCESSED_INPUT
|ENABLE_WINDOW_INPUT|ENABLE_MOUSE_INPUT|ENABLE_PROCESSED_OUTPUT|
ENABLE_WRAP_AT_EOL_OUTPUT|ENABLE_LINE_INPUT|0x0004|0x0040);
#endif
// create the application instance
AppDelegate app;
int ret = Application::getInstance()->run();
#ifdef USE_WIN32_CONSOLE
FreeConsole();
#endif
return ret;
}