22 #ifndef FIFE_VIDEO_RENDERBACKENSD_OPENGL_RENDERBACKENDOPENGLE_H
23 #define FIFE_VIDEO_RENDERBACKENSD_OPENGL_RENDERBACKENDOPENGLE_H
33 #include "video/renderbackend.h"
34 #include "video/opengl/fife_opengl.h"
46 virtual const std::string&
getName()
const;
49 virtual void init(
const std::string& driver);
53 virtual void setLighting(
float red,
float green,
float blue);
58 virtual void createMainScreen(
const ScreenMode& mode,
const std::string& title,
const std::string& icon);
61 virtual Image* createImage(IResourceLoader* loader = 0);
62 virtual Image* createImage(
const std::string& name, IResourceLoader* loader = 0);
63 virtual Image* createImage(
const uint8_t* data, uint32_t width, uint32_t height);
64 virtual Image* createImage(
const std::string& name,
const uint8_t* data, uint32_t width, uint32_t height);
65 virtual Image* createImage(SDL_Surface* surface);
66 virtual Image* createImage(
const std::string& name, SDL_Surface* surface);
69 virtual void addImageToArray(uint32_t
id,
const Rect& rec,
float const* st, uint8_t alpha, uint8_t
const* rgb);
70 virtual void addImageToArrayZ(uint32_t
id,
const Rect& rec,
float vertexZ,
float const* st, uint8_t alpha,
bool forceNewBatch, uint8_t
const* rgb);
71 virtual void changeRenderInfos(uint16_t elements, int32_t src, int32_t dst,
bool light,
bool stentest, uint8_t stenref, GLConstants stenop, GLConstants stenfunc);
73 virtual void captureScreen(
const std::string& filename, uint32_t width, uint32_t height);
75 virtual bool putPixel(int32_t x, int32_t y, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255);
76 virtual void drawLine(
const Point& p1,
const Point& p2, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255);
78 virtual void drawRectangle(
const Point& p, uint16_t w, uint16_t h, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255);
79 virtual void fillRectangle(
const Point& p, uint16_t w, uint16_t h, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255);
80 virtual void drawQuad(
const Point& p1,
const Point& p2,
const Point& p3,
const Point& p4, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255);
81 virtual void drawVertex(
const Point& p,
const uint8_t size, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255);
82 virtual void drawLightPrimitive(
const Point& p, uint8_t intensity,
float radius, int32_t subdivisions,
float xstretch,
float ystretch, uint8_t red, uint8_t green, uint8_t blue);
87 void enableTextures(uint32_t texUnit);
88 void disableTextures(uint32_t texUnit);
89 void bindTexture(uint32_t texUnit, GLuint texId);
90 void bindTexture(GLuint textId);
92 static const float zfar;
93 static const float znear;
98 void enableLighting();
99 void disableLighting();
100 void enableStencilTest();
101 void disableStencilTest();
102 void setStencilTest(uint8_t stencil_ref, GLenum stencil_op, GLenum stencil_func);
103 void enableAlphaTest();
104 void disableAlphaTest();
105 void setAlphaTest(
float ref_alpha);
106 void enableDepthTest();
107 void disableDepthTest();
108 void setEnvironmentalColor(
const uint8_t* rgb);
109 void setVertexPointer(GLsizei stride,
const GLvoid* ptr);
110 void setColorPointer(GLsizei stride,
const GLvoid* ptr);
111 void setTexCoordPointer(uint32_t texUnit, GLsizei stride,
const GLvoid* ptr);
112 void enableScissorTest();
113 void disableScissorTest();
116 void renderWithoutZ();
118 GLuint m_mask_overlays;
119 void prepareForOverlays();
128 struct RenderZData2T {
143 struct RenderZObject {
151 RenderZObject* getRenderBufferObject(GLuint texture_id,
bool unlit =
false);
154 std::vector<RenderZData> m_renderZ_datas;
155 std::vector<RenderZObject> m_renderZ_objects;
158 std::vector<RenderZData2T> m_render_trans_datas;
159 std::vector<RenderObject> m_render_trans_objects;
162 std::vector<RenderZData2T> m_render_datas2T;
163 std::vector<RenderObject> m_render_objects2T;
166 std::vector<RenderZObject> m_renderZ_objects_forced;
169 std::vector<RenderData> m_render_datas;
170 std::vector<RenderObject> m_render_objects;
172 struct currentState {
177 uint32_t active_client_tex;
191 uint8_t env_color[3];
201 bool m_target_discard;
virtual void detachRenderTarget()
virtual void drawRectangle(const Point &p, uint16_t w, uint16_t h, uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
virtual void attachRenderTarget(ImagePtr &img, bool discard)
virtual void init(const std::string &driver)
virtual void drawQuad(const Point &p1, const Point &p2, const Point &p3, const Point &p4, uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
virtual void changeBlending(int32_t scr, int32_t dst)
virtual void createMainScreen(const ScreenMode &mode, const std::string &title, const std::string &icon)
virtual void drawLine(const Point &p1, const Point &p2, uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
virtual void renderVertexArrays()
virtual void fillRectangle(const Point &p, uint16_t w, uint16_t h, uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
virtual void setLighting(float red, float green, float blue)
virtual const std::string & getName() const
virtual void resetLighting()
virtual void startFrame()
virtual void changeRenderInfos(uint16_t elements, int32_t src, int32_t dst, bool light, bool stentest, uint8_t stenref, GLConstants stenop, GLConstants stenfunc)
virtual void setScreenMode(const ScreenMode &mode)
virtual bool putPixel(int32_t x, int32_t y, uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
virtual void drawTriangle(const Point &p1, const Point &p2, const Point &p3, uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
virtual void setLightingModel(uint32_t lighting)
virtual void addImageToArray(uint32_t id, const Rect &rec, float const *st, uint8_t alpha, uint8_t const *rgb)
virtual void drawLightPrimitive(const Point &p, uint8_t intensity, float radius, int32_t subdivisions, float xstretch, float ystretch, uint8_t red, uint8_t green, uint8_t blue)
virtual void captureScreen(const std::string &filename)
virtual void drawVertex(const Point &p, const uint8_t size, uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
virtual void clearBackBuffer()
virtual uint32_t getLightingModel() const
virtual void resetStencilBuffer(uint8_t buffer)
virtual void setClipArea(const Rect &cliparea, bool clear)
credit to phoku for his NodeDisplay example which the visitor code is adapted from ( he coded the qua...