上一节中,获取到了OpenGL的视图窗口,但是还没有办法渲染,现在我们把渲染对象加进来。
// Renderer.h
#ifndef __RENDERER_H__
#define __RENDERER_H__
#include <iostream>
class Renderer {
public:
void render();
};
void Renderer::render() {
// 调用OpenGL接口渲染
std::cout << "render..." << std::endl;
}
#endif
然后在Director.h创建一个渲染对象,并添加一个接口给子类调用。
// Director.h
class Director {
public:
static Director* getInstance();
Director();
virtual ~Director();
virtual bool init();
virtual void mainLoop() = 0;
GLView* getOpenGLView();
void setOpenGLView(GLView *openGLView);
void drawScene();
private:
GLView *_openGLView;
Renderer *_renderer;
};
void Director::drawScene() {
_renderer->render();
}
在其子类DisplayLinkDirector中添加一个接口,调用基类的drawScene方法渲染场景,并添加一个接口在Application中调用
void DisplayLinkDirector::mainLoop() {
drawScene();
}
然后在Application中循环调用这个方法,不断得渲染游戏画面。
int Application::run() {
if (!applicationDidFinishLaunching()) {
return 1;
}
Director* director = Director::getInstance();
GLView* glview = director->getOpenGLView();
// glview->retain();
while(!glview->windowShouldClose()) {
director->mainLoop();
}
// glview->release();
return 0;
}
其中windowShouldClose函数现在直接返回了一个false,什么都没干。