Commit 16695666 authored by nadro's avatar nadro

- Prepared OpenGL RenderTarget class for new architecture of Irrlicht's shared...

- Prepared OpenGL RenderTarget class for new architecture of Irrlicht's shared OpenGL drivers code (new architecture will allow us to adopt new OpenGL drivers faster and makes different drivers easier to maintain).

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@5163 dfc29bdd-3216-0410-991c-e03cc46cb475
parent b5b6bcbb
// Copyright (C) 2015 Patryk Nadrowski
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef __C_OGLCORE_COMMON_H_INCLUDED__
#define __C_OGLCORE_COMMON_H_INCLUDED__
#include "IrrCompileConfig.h"
#if defined(_IRR_COMPILE_WITH_OPENGL_) || defined(_IRR_COMPILE_WITH_OGLES1_) || defined(_IRR_COMPILE_WITH_OGLES2_)
#include "irrTypes.h"
namespace irr
{
namespace video
{
class COGLCoreFeature
{
public:
COGLCoreFeature() : ColorAttachment(0), MultipleRenderTarget(0)
{
}
virtual ~COGLCoreFeature()
{
}
u8 ColorAttachment;
u8 MultipleRenderTarget;
};
}
}
#endif
#endif
// Copyright (C) 2015 Patryk Nadrowski
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef __C_OGLCORE_RENDER_TARGET_H_INCLUDED__
#define __C_OGLCORE_RENDER_TARGET_H_INCLUDED__
#include "IrrCompileConfig.h"
#if defined(_IRR_COMPILE_WITH_OPENGL_) || defined(_IRR_COMPILE_WITH_OGLES1_) || defined(_IRR_COMPILE_WITH_OGLES2_)
#include "IRenderTarget.h"
#include "dimension2d.h"
namespace irr
{
namespace video
{
template <class TOGLDriver, class TOGLTexture>
class COGLCoreRenderTarget : public IRenderTarget
{
public:
COGLCoreRenderTarget(TOGLDriver* driver) : AssignedDepth(false), AssignedStencil(false), RequestTextureUpdate(false), RequestDepthStencilUpdate(false),
BufferID(0), ColorAttachment(0), MultipleRenderTarget(0), Driver(driver)
{
#ifdef _DEBUG
setDebugName("COGLCoreRenderTarget");
#endif
DriverType = Driver->getDriverType();
Size = Driver->getScreenSize();
ColorAttachment = Driver->getFeature().ColorAttachment;
MultipleRenderTarget = Driver->getFeature().MultipleRenderTarget;
if (ColorAttachment > 0)
Driver->irrGlGenFramebuffers(1, &BufferID);
AssignedTexture.set_used(static_cast<u32>(ColorAttachment));
for (u32 i = 0; i < AssignedTexture.size(); ++i)
AssignedTexture[i] = GL_NONE;
}
virtual ~COGLCoreRenderTarget()
{
if (ColorAttachment > 0 && BufferID != 0)
Driver->irrGlDeleteFramebuffers(1, &BufferID);
for (u32 i = 0; i < Texture.size(); ++i)
{
if (Texture[i])
Texture[i]->drop();
}
if (DepthStencil)
DepthStencil->drop();
}
virtual void setTexture(const core::array<ITexture*>& texture, ITexture* depthStencil) _IRR_OVERRIDE_
{
bool textureUpdate = (Texture != texture) ? true : false;
bool depthStencilUpdate = (DepthStencil != depthStencil) ? true : false;
if (textureUpdate || depthStencilUpdate)
{
// Set color attachments.
if (textureUpdate)
{
for (u32 i = 0; i < Texture.size(); ++i)
{
if (Texture[i])
Texture[i]->drop();
}
if (texture.size() > static_cast<u32>(ColorAttachment))
{
core::stringc message = "This GPU supports up to ";
message += static_cast<u32>(ColorAttachment);
message += " textures per render target.";
os::Printer::log(message.c_str(), ELL_WARNING);
}
Texture.set_used(core::min_(texture.size(), static_cast<u32>(ColorAttachment)));
for (u32 i = 0; i < Texture.size(); ++i)
{
GLuint textureID = (texture[i] && texture[i]->getDriverType() == DriverType) ? static_cast<TOGLTexture*>(texture[i])->getOpenGLTextureName() : 0;
if (textureID != 0)
{
Texture[i] = texture[i];
Texture[i]->grab();
}
else
{
Texture[i] = 0;
}
}
RequestTextureUpdate = true;
}
// Set depth and stencil attachments.
if (depthStencilUpdate)
{
GLuint textureID = (depthStencil && depthStencil->getDriverType() == DriverType) ? static_cast<TOGLTexture*>(depthStencil)->getOpenGLTextureName() : 0;
const ECOLOR_FORMAT textureFormat = (textureID != 0) ? depthStencil->getColorFormat() : ECF_UNKNOWN;
if (IImage::isDepthFormat(textureFormat))
{
DepthStencil = depthStencil;
DepthStencil->grab();
}
else
{
if (DepthStencil)
DepthStencil->drop();
DepthStencil = 0;
}
RequestDepthStencilUpdate = true;
}
// Set size required for a viewport.
ITexture* firstTexture = getTexture();
if (firstTexture)
Size = firstTexture->getSize();
else
{
if (DepthStencil)
Size = DepthStencil->getSize();
else
Size = Driver->getScreenSize();
}
}
}
void update()
{
if (RequestTextureUpdate || RequestDepthStencilUpdate)
{
// Set color attachments.
if (RequestTextureUpdate)
{
// Set new color textures.
const u32 textureSize = core::min_(Texture.size(), AssignedTexture.size());
for (u32 i = 0; i < textureSize; ++i)
{
GLuint textureID = (Texture[i]) ? static_cast<TOGLTexture*>(Texture[i])->getOpenGLTextureName() : 0;
if (textureID != 0)
{
AssignedTexture[i] = GL_COLOR_ATTACHMENT0 + i;
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, AssignedTexture[i], GL_TEXTURE_2D, textureID, 0);
}
else if (AssignedTexture[i] != GL_NONE)
{
AssignedTexture[i] = GL_NONE;
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, AssignedTexture[i], GL_TEXTURE_2D, 0, 0);
os::Printer::log("Error: Could not set render target.", ELL_ERROR);
}
}
// Reset other render target channels.
for (u32 i = textureSize; i < AssignedTexture.size(); ++i)
{
if (AssignedTexture[i] != GL_NONE)
{
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, AssignedTexture[i], GL_TEXTURE_2D, 0, 0);
AssignedTexture[i] = GL_NONE;
}
}
RequestTextureUpdate = false;
}
// Set depth and stencil attachments.
if (RequestDepthStencilUpdate)
{
const ECOLOR_FORMAT textureFormat = (DepthStencil) ? DepthStencil->getColorFormat() : ECF_UNKNOWN;
if (IImage::isDepthFormat(textureFormat))
{
GLuint textureID = static_cast<TOGLTexture*>(DepthStencil)->getOpenGLTextureName();
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, textureID, 0);
if (textureFormat == ECF_D24S8)
{
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, textureID, 0);
AssignedStencil = true;
}
else
{
if (AssignedStencil)
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
AssignedStencil = false;
}
AssignedDepth = true;
}
else
{
if (AssignedDepth)
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
if (AssignedStencil)
Driver->irrGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
AssignedDepth = false;
AssignedStencil = false;
}
RequestDepthStencilUpdate = false;
}
// Configure drawing operation.
if (ColorAttachment > 0 && BufferID != 0)
{
const u32 textureSize = Texture.size();
if (textureSize == 0)
glDrawBuffer(GL_NONE);
else if (textureSize == 1 || MultipleRenderTarget == 0)
glDrawBuffer(GL_COLOR_ATTACHMENT0);
else
{
const u32 bufferCount = core::min_(MultipleRenderTarget, core::min_(textureSize, AssignedTexture.size()));
Driver->irrGlDrawBuffers(bufferCount, AssignedTexture.pointer());
}
}
#ifdef _DEBUG
checkFBO(Driver);
#endif
}
}
GLuint getBufferID() const
{
return BufferID;
}
const core::dimension2d<u32>& getSize() const
{
return Size;
}
ITexture* getTexture() const
{
for (u32 i = 0; i < Texture.size(); ++i)
{
if (Texture[i])
return Texture[i];
}
return 0;
}
protected:
bool checkFBO(TOGLDriver* driver)
{
if (ColorAttachment == 0)
return true;
GLenum status = driver->irrGlCheckFramebufferStatus(GL_FRAMEBUFFER);
switch (status)
{
case GL_FRAMEBUFFER_COMPLETE:
return true;
case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER:
os::Printer::log("FBO has invalid read buffer", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER:
os::Printer::log("FBO has invalid draw buffer", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
os::Printer::log("FBO has one or several incomplete image attachments", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_FORMATS:
os::Printer::log("FBO has one or several image attachments with different internal formats", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
os::Printer::log("FBO has one or several image attachments with different dimensions", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
os::Printer::log("FBO missing an image attachment", ELL_ERROR);
break;
case GL_FRAMEBUFFER_UNSUPPORTED:
os::Printer::log("FBO format unsupported", ELL_ERROR);
break;
default:
os::Printer::log("FBO error", ELL_ERROR);
break;
}
return false;
}
core::array<GLenum> AssignedTexture;
bool AssignedDepth;
bool AssignedStencil;
bool RequestTextureUpdate;
bool RequestDepthStencilUpdate;
GLuint BufferID;
core::dimension2d<u32> Size;
u32 ColorAttachment;
u32 MultipleRenderTarget;
TOGLDriver* Driver;
};
}
}
#endif
#endif
...@@ -134,7 +134,7 @@ COpenGLCacheHandler::COpenGLCacheHandler(COpenGLDriver* driver) : ...@@ -134,7 +134,7 @@ COpenGLCacheHandler::COpenGLCacheHandler(COpenGLDriver* driver) :
ClientActiveTexture(GL_TEXTURE0_ARB), ClientStateVertex(false), ClientStateNormal(false),ClientStateColor(false), ClientActiveTexture(GL_TEXTURE0_ARB), ClientStateVertex(false), ClientStateNormal(false),ClientStateColor(false),
ClientStateTexCoord0(false), ViewportX(0), ViewportY(0) ClientStateTexCoord0(false), ViewportX(0), ViewportY(0)
{ {
FrameBufferCount = core::max_(static_cast<GLuint>(1), static_cast<GLuint>(Driver->MaxMultipleRenderTargets)); FrameBufferCount = core::max_(static_cast<GLuint>(1), static_cast<GLuint>(Driver->getFeature().MultipleRenderTarget));
BlendEquation = new GLenum[FrameBufferCount]; BlendEquation = new GLenum[FrameBufferCount];
BlendSourceRGB = new GLenum[FrameBufferCount]; BlendSourceRGB = new GLenum[FrameBufferCount];
...@@ -507,9 +507,8 @@ void COpenGLCacheHandler::setFBO(GLuint id) ...@@ -507,9 +507,8 @@ void COpenGLCacheHandler::setFBO(GLuint id)
{ {
if (FrameBufferID != id) if (FrameBufferID != id)
{ {
#if defined(GL_EXT_framebuffer_object) Driver->irrGlBindFramebuffer(GL_FRAMEBUFFER, id);
Driver->extGlBindFramebuffer(GL_FRAMEBUFFER_EXT, id);
#endif
FrameBufferID = id; FrameBufferID = id;
} }
} }
......
...@@ -8,9 +8,10 @@ ...@@ -8,9 +8,10 @@
#ifdef _IRR_COMPILE_WITH_OPENGL_ #ifdef _IRR_COMPILE_WITH_OPENGL_
#include "COGLCoreRenderTarget.h"
#include "COpenGLCacheHandler.h" #include "COpenGLCacheHandler.h"
#include "COpenGLTexture.h" #include "COpenGLTexture.h"
#include "COpenGLRenderTarget.h"
#include "COpenGLMaterialRenderer.h" #include "COpenGLMaterialRenderer.h"
#include "COpenGLShaderMaterialRenderer.h" #include "COpenGLShaderMaterialRenderer.h"
#include "COpenGLSLMaterialRenderer.h" #include "COpenGLSLMaterialRenderer.h"
...@@ -681,7 +682,7 @@ bool COpenGLDriver::genericDriverInit() ...@@ -681,7 +682,7 @@ bool COpenGLDriver::genericDriverInit()
DriverAttributes->setAttribute("MaxAnisotropy", MaxAnisotropy); DriverAttributes->setAttribute("MaxAnisotropy", MaxAnisotropy);
DriverAttributes->setAttribute("MaxUserClipPlanes", MaxUserClipPlanes); DriverAttributes->setAttribute("MaxUserClipPlanes", MaxUserClipPlanes);
DriverAttributes->setAttribute("MaxAuxBuffers", MaxAuxBuffers); DriverAttributes->setAttribute("MaxAuxBuffers", MaxAuxBuffers);
DriverAttributes->setAttribute("MaxMultipleRenderTargets", MaxMultipleRenderTargets); DriverAttributes->setAttribute("MaxMultipleRenderTargets", Feature.MultipleRenderTarget);
DriverAttributes->setAttribute("MaxIndices", (s32)MaxIndices); DriverAttributes->setAttribute("MaxIndices", (s32)MaxIndices);
DriverAttributes->setAttribute("MaxTextureSize", (s32)MaxTextureSize); DriverAttributes->setAttribute("MaxTextureSize", (s32)MaxTextureSize);
DriverAttributes->setAttribute("MaxGeometryVerticesOut", (s32)MaxGeometryVerticesOut); DriverAttributes->setAttribute("MaxGeometryVerticesOut", (s32)MaxGeometryVerticesOut);
...@@ -4199,11 +4200,7 @@ bool COpenGLDriver::setRenderTarget(IRenderTarget* target, u16 clearFlag, SColor ...@@ -4199,11 +4200,7 @@ bool COpenGLDriver::setRenderTarget(IRenderTarget* target, u16 clearFlag, SColor
return false; return false;
} }
bool supportForFBO = false; bool supportForFBO = (getFeature().ColorAttachment > 0);
#if defined(GL_VERSION_3_0) || defined(GL_ARB_framebuffer_object) || defined(GL_EXT_framebuffer_object)
supportForFBO = FeatureAvailable[IRR_EXT_framebuffer_object] || FeatureAvailable[IRR_ARB_framebuffer_object];
#endif
core::dimension2d<u32> destRenderTargetSize(0, 0); core::dimension2d<u32> destRenderTargetSize(0, 0);
......
...@@ -29,8 +29,14 @@ namespace irr ...@@ -29,8 +29,14 @@ namespace irr
namespace video namespace video
{ {
template <class TOGLDriver, class TOGLTexture>
class COGLCoreRenderTarget;
class COpenGLCacheHandler; class COpenGLCacheHandler;
class COpenGLTexture; class COpenGLTexture;
class COpenGLDriver;
typedef COGLCoreRenderTarget<COpenGLDriver, COpenGLTexture> COpenGLRenderTarget;
class COpenGLDriver : public CNullDriver, public IMaterialRendererServices, public COpenGLExtensionHandler class COpenGLDriver : public CNullDriver, public IMaterialRendererServices, public COpenGLExtensionHandler
{ {
......
...@@ -20,8 +20,7 @@ COpenGLExtensionHandler::COpenGLExtensionHandler() : ...@@ -20,8 +20,7 @@ COpenGLExtensionHandler::COpenGLExtensionHandler() :
StencilBuffer(false), MultiTextureExtension(false), StencilBuffer(false), MultiTextureExtension(false),
TextureCompressionExtension(false), TextureCompressionExtension(false),
MaxSupportedTextures(1), MaxTextureUnits(1), MaxLights(1), MaxSupportedTextures(1), MaxTextureUnits(1), MaxLights(1),
MaxAnisotropy(1), MaxUserClipPlanes(0), MaxAuxBuffers(0), MaxAnisotropy(1), MaxUserClipPlanes(0), MaxAuxBuffers(0), MaxIndices(65535),
MaxMultipleRenderTargets(1), MaxColorAttachments(1), MaxIndices(65535),
MaxTextureSize(1), MaxGeometryVerticesOut(0), MaxTextureSize(1), MaxGeometryVerticesOut(0),
MaxTextureLODBias(0.f), Version(0), ShaderLanguageVersion(0), MaxTextureLODBias(0.f), Version(0), ShaderLanguageVersion(0),
OcclusionQuerySupport(false) OcclusionQuerySupport(false)
...@@ -642,7 +641,7 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer) ...@@ -642,7 +641,7 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
if (FeatureAvailable[IRR_ARB_draw_buffers]) if (FeatureAvailable[IRR_ARB_draw_buffers])
{ {
glGetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &num); glGetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &num);
MaxMultipleRenderTargets = static_cast<u8>(num); Feature.MultipleRenderTarget = static_cast<u8>(num);
} }
#endif #endif
#if defined(GL_ATI_draw_buffers) #if defined(GL_ATI_draw_buffers)
...@@ -652,16 +651,27 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer) ...@@ -652,16 +651,27 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
if (FeatureAvailable[IRR_ATI_draw_buffers]) if (FeatureAvailable[IRR_ATI_draw_buffers])
{ {
glGetIntegerv(GL_MAX_DRAW_BUFFERS_ATI, &num); glGetIntegerv(GL_MAX_DRAW_BUFFERS_ATI, &num);
MaxMultipleRenderTargets = static_cast<u8>(num); Feature.MultipleRenderTarget = static_cast<u8>(num);
} }
#endif #endif
#if defined(GL_EXT_framebuffer_object) #ifdef GL_ARB_framebuffer_object
if (FeatureAvailable[IRR_EXT_framebuffer_object]) if (FeatureAvailable[IRR_ARB_framebuffer_object])
{ {
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, &num); glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &num);
MaxColorAttachments = static_cast<u8>(num); Feature.ColorAttachment = static_cast<u8>(num);
} }
#endif #endif
#if defined(GL_EXT_framebuffer_object)
#ifdef GL_ARB_framebuffer_object
else
#endif
if (FeatureAvailable[IRR_EXT_framebuffer_object])
{
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, &num);
Feature.ColorAttachment = static_cast<u8>(num);
}
#endif
glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, DimAliasedLine); glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, DimAliasedLine);
glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, DimAliasedPoint); glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, DimAliasedPoint);
glGetFloatv(GL_SMOOTH_LINE_WIDTH_RANGE, DimSmoothedLine); glGetFloatv(GL_SMOOTH_LINE_WIDTH_RANGE, DimSmoothedLine);
...@@ -746,6 +756,11 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer) ...@@ -746,6 +756,11 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
#endif #endif
} }
const COGLCoreFeature& COpenGLExtensionHandler::getFeature() const
{
return Feature;
}
bool COpenGLExtensionHandler::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const bool COpenGLExtensionHandler::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const
{ {
switch (feature) switch (feature)
......
...@@ -77,6 +77,45 @@ typedef unsigned int GLhandleARB; ...@@ -77,6 +77,45 @@ typedef unsigned int GLhandleARB;
typedef char GLchar; typedef char GLchar;
#endif #endif
// FBO definitions.
#if !defined(GL_VERSION_3_0) && !defined(GL_ARB_framebuffer_object)
#ifdef GL_EXT_framebuffer_object
#define GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT
#define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT
#define GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_EXT
#define GL_STENCIL_ATTACHMENT GL_STENCIL_ATTACHMENT_EXT
#define GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT
#define GL_FRAMEBUFFER_UNSUPPORTED GL_FRAMEBUFFER_UNSUPPORTED_EXT
#else
#define GL_FRAMEBUFFER 0
#define GL_COLOR_ATTACHMENT0 0
#define GL_DEPTH_ATTACHMENT 0
#define GL_STENCIL_ATTACHMENT 0
#define GL_FRAMEBUFFER_COMPLETE 0
#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 1
#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 2
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 3
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 4
#define GL_FRAMEBUFFER_UNSUPPORTED 5
#endif
#endif
#ifdef GL_EXT_framebuffer_object
#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
#else
#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS 6
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 7
#endif
#include "COGLCoreFeature.h"
namespace irr namespace irr
{ {
...@@ -1058,6 +1097,8 @@ class COpenGLExtensionHandler ...@@ -1058,6 +1097,8 @@ class COpenGLExtensionHandler
// deferred initialization // deferred initialization
void initExtensions(bool stencilBuffer); void initExtensions(bool stencilBuffer);
const COGLCoreFeature& getFeature() const;
//! queries the features of the driver, returns true if feature is available //! queries the features of the driver, returns true if feature is available
bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const; bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const;
...@@ -1090,10 +1131,6 @@ class COpenGLExtensionHandler ...@@ -1090,10 +1131,6 @@ class COpenGLExtensionHandler
u8 MaxUserClipPlanes; u8 MaxUserClipPlanes;
//! Number of auxiliary buffers //! Number of auxiliary buffers
u8 MaxAuxBuffers; u8 MaxAuxBuffers;
//! Number of rendertargets available as MRTs
u8 MaxMultipleRenderTargets;
//! Number of color attachments available in FBO
u8 MaxColorAttachments;
//! Optimal number of indices per meshbuffer //! Optimal number of indices per meshbuffer
u32 MaxIndices; u32 MaxIndices;
//! Maximal texture dimension //! Maximal texture dimension
...@@ -1195,19 +1232,19 @@ class COpenGLExtensionHandler ...@@ -1195,19 +1232,19 @@ class COpenGLExtensionHandler
void extGlGetActiveUniform(GLuint program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLchar *name); void extGlGetActiveUniform(GLuint program, GLuint index, GLsizei maxlength, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
// framebuffer objects // framebuffer objects
void extGlBindFramebuffer(GLenum target, GLuint framebuffer); void irrGlBindFramebuffer(GLenum target, GLuint framebuffer);
void extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers); void irrGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers);
void extGlGenFramebuffers(GLsizei n, GLuint *framebuffers); void irrGlGenFramebuffers(GLsizei n, GLuint *framebuffers);
GLenum extGlCheckFramebufferStatus(GLenum target); GLenum irrGlCheckFramebufferStatus(GLenum target);
void extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void irrGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void extGlBindRenderbuffer(GLenum target, GLuint renderbuffer); void irrGlBindRenderbuffer(GLenum target, GLuint renderbuffer);
void extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); void irrGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers);
void extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers); void irrGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers);
void extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void irrGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void irrGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void extGlGenerateMipmap(GLenum target); void irrGlGenerateMipmap(GLenum target);
void extGlActiveStencilFace(GLenum face); void irrGlActiveStencilFace(GLenum face);
void extGlDrawBuffers(GLsizei n, const GLenum *bufs); void irrGlDrawBuffers(GLsizei n, const GLenum *bufs);
// vertex buffer object // vertex buffer object
void extGlGenBuffers(GLsizei n, GLuint *buffers); void extGlGenBuffers(GLsizei n, GLuint *buffers);
...@@ -1254,6 +1291,8 @@ class COpenGLExtensionHandler ...@@ -1254,6 +1291,8 @@ class COpenGLExtensionHandler
bool FeatureAvailable[IRR_OpenGL_Feature_Count]; bool FeatureAvailable[IRR_OpenGL_Feature_Count];
protected: protected:
COGLCoreFeature Feature;
#if defined(_IRR_OPENGL_USE_EXTPOINTER_) #if defined(_IRR_OPENGL_USE_EXTPOINTER_)
PFNGLACTIVETEXTUREARBPROC pGlActiveTextureARB; PFNGLACTIVETEXTUREARBPROC pGlActiveTextureARB;
PFNGLCLIENTACTIVETEXTUREARBPROC pGlClientActiveTextureARB; PFNGLCLIENTACTIVETEXTUREARBPROC pGlClientActiveTextureARB;
...@@ -2103,7 +2142,7 @@ inline void COpenGLExtensionHandler::extGlCompressedTexSubImage2D(GLenum target, ...@@ -2103,7 +2142,7 @@ inline void COpenGLExtensionHandler::extGlCompressedTexSubImage2D(GLenum target,
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlBindFramebuffer(GLenum target, GLuint framebuffer) inline void COpenGLExtensionHandler::irrGlBindFramebuffer(GLenum target, GLuint framebuffer)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindFramebuffer) if (pGlBindFramebuffer)
...@@ -2119,7 +2158,7 @@ inline void COpenGLExtensionHandler::extGlBindFramebuffer(GLenum target, GLuint ...@@ -2119,7 +2158,7 @@ inline void COpenGLExtensionHandler::extGlBindFramebuffer(GLenum target, GLuint
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) inline void COpenGLExtensionHandler::irrGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteFramebuffers) if (pGlDeleteFramebuffers)
...@@ -2135,7 +2174,7 @@ inline void COpenGLExtensionHandler::extGlDeleteFramebuffers(GLsizei n, const GL ...@@ -2135,7 +2174,7 @@ inline void COpenGLExtensionHandler::extGlDeleteFramebuffers(GLsizei n, const GL
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlGenFramebuffers(GLsizei n, GLuint *framebuffers) inline void COpenGLExtensionHandler::irrGlGenFramebuffers(GLsizei n, GLuint *framebuffers)
{ {
if (framebuffers) if (framebuffers)
memset(framebuffers,0,n*sizeof(GLuint)); memset(framebuffers,0,n*sizeof(GLuint));
...@@ -2153,7 +2192,7 @@ inline void COpenGLExtensionHandler::extGlGenFramebuffers(GLsizei n, GLuint *fra ...@@ -2153,7 +2192,7 @@ inline void COpenGLExtensionHandler::extGlGenFramebuffers(GLsizei n, GLuint *fra
#endif #endif
} }
inline GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatus(GLenum target) inline GLenum COpenGLExtensionHandler::irrGlCheckFramebufferStatus(GLenum target)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlCheckFramebufferStatus) if (pGlCheckFramebufferStatus)
...@@ -2172,7 +2211,7 @@ inline GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatus(GLenum target ...@@ -2172,7 +2211,7 @@ inline GLenum COpenGLExtensionHandler::extGlCheckFramebufferStatus(GLenum target
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) inline void COpenGLExtensionHandler::irrGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlFramebufferTexture2D) if (pGlFramebufferTexture2D)
...@@ -2188,7 +2227,7 @@ inline void COpenGLExtensionHandler::extGlFramebufferTexture2D(GLenum target, GL ...@@ -2188,7 +2227,7 @@ inline void COpenGLExtensionHandler::extGlFramebufferTexture2D(GLenum target, GL
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlBindRenderbuffer(GLenum target, GLuint renderbuffer) inline void COpenGLExtensionHandler::irrGlBindRenderbuffer(GLenum target, GLuint renderbuffer)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBindRenderbuffer) if (pGlBindRenderbuffer)
...@@ -2204,7 +2243,7 @@ inline void COpenGLExtensionHandler::extGlBindRenderbuffer(GLenum target, GLuint ...@@ -2204,7 +2243,7 @@ inline void COpenGLExtensionHandler::extGlBindRenderbuffer(GLenum target, GLuint
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) inline void COpenGLExtensionHandler::irrGlDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDeleteRenderbuffers) if (pGlDeleteRenderbuffers)
...@@ -2220,7 +2259,7 @@ inline void COpenGLExtensionHandler::extGlDeleteRenderbuffers(GLsizei n, const G ...@@ -2220,7 +2259,7 @@ inline void COpenGLExtensionHandler::extGlDeleteRenderbuffers(GLsizei n, const G
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers) inline void COpenGLExtensionHandler::irrGlGenRenderbuffers(GLsizei n, GLuint *renderbuffers)
{ {
if (renderbuffers) if (renderbuffers)
memset(renderbuffers,0,n*sizeof(GLuint)); memset(renderbuffers,0,n*sizeof(GLuint));
...@@ -2238,7 +2277,7 @@ inline void COpenGLExtensionHandler::extGlGenRenderbuffers(GLsizei n, GLuint *re ...@@ -2238,7 +2277,7 @@ inline void COpenGLExtensionHandler::extGlGenRenderbuffers(GLsizei n, GLuint *re
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) inline void COpenGLExtensionHandler::irrGlRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlRenderbufferStorage) if (pGlRenderbufferStorage)
...@@ -2254,7 +2293,7 @@ inline void COpenGLExtensionHandler::extGlRenderbufferStorage(GLenum target, GLe ...@@ -2254,7 +2293,7 @@ inline void COpenGLExtensionHandler::extGlRenderbufferStorage(GLenum target, GLe
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) inline void COpenGLExtensionHandler::irrGlFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlFramebufferRenderbuffer) if (pGlFramebufferRenderbuffer)
...@@ -2270,7 +2309,7 @@ inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target, ...@@ -2270,7 +2309,7 @@ inline void COpenGLExtensionHandler::extGlFramebufferRenderbuffer(GLenum target,
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlGenerateMipmap(GLenum target) inline void COpenGLExtensionHandler::irrGlGenerateMipmap(GLenum target)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlGenerateMipmap) if (pGlGenerateMipmap)
...@@ -2286,7 +2325,7 @@ inline void COpenGLExtensionHandler::extGlGenerateMipmap(GLenum target) ...@@ -2286,7 +2325,7 @@ inline void COpenGLExtensionHandler::extGlGenerateMipmap(GLenum target)
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlActiveStencilFace(GLenum face) inline void COpenGLExtensionHandler::irrGlActiveStencilFace(GLenum face)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlActiveStencilFaceEXT) if (pGlActiveStencilFaceEXT)
...@@ -2298,7 +2337,7 @@ inline void COpenGLExtensionHandler::extGlActiveStencilFace(GLenum face) ...@@ -2298,7 +2337,7 @@ inline void COpenGLExtensionHandler::extGlActiveStencilFace(GLenum face)
#endif #endif
} }
inline void COpenGLExtensionHandler::extGlDrawBuffers(GLsizei n, const GLenum *bufs) inline void COpenGLExtensionHandler::irrGlDrawBuffers(GLsizei n, const GLenum *bufs)
{ {
#ifdef _IRR_OPENGL_USE_EXTPOINTER_ #ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlDrawBuffersARB) if (pGlDrawBuffersARB)
......
// Copyright (C) 2015 Patryk Nadrowski
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#include "COpenGLRenderTarget.h"
#ifdef _IRR_COMPILE_WITH_OPENGL_
#include "IImage.h"
#include "irrMath.h"
#include "irrString.h"
#include "COpenGLDriver.h"
#include "COpenGLTexture.h"
#if !defined(GL_VERSION_3_0) && !defined(GL_ARB_framebuffer_object)
#ifdef GL_EXT_framebuffer_object
#define GL_FRAMEBUFFER GL_FRAMEBUFFER_EXT
#define GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENT0_EXT
#define GL_DEPTH_ATTACHMENT GL_DEPTH_ATTACHMENT_EXT
#define GL_STENCIL_ATTACHMENT GL_STENCIL_ATTACHMENT_EXT
#define GL_FRAMEBUFFER_COMPLETE GL_FRAMEBUFFER_COMPLETE_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT
#define GL_FRAMEBUFFER_UNSUPPORTED GL_FRAMEBUFFER_UNSUPPORTED_EXT
#else
#define GL_FRAMEBUFFER 0
#define GL_COLOR_ATTACHMENT0 0
#define GL_DEPTH_ATTACHMENT 0
#define GL_STENCIL_ATTACHMENT 0
#define GL_FRAMEBUFFER_COMPLETE 0
#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 1
#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 2
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 3
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 4
#define GL_FRAMEBUFFER_UNSUPPORTED 5
#endif
#endif
#ifdef GL_EXT_framebuffer_object
#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
#else
#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS 6
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 7
#endif
namespace irr
{
namespace video
{
bool checkFBOStatus(COpenGLDriver* Driver)
{
GLenum status = Driver->extGlCheckFramebufferStatus(GL_FRAMEBUFFER);
switch (status)
{
case GL_FRAMEBUFFER_COMPLETE:
return true;
case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER:
os::Printer::log("FBO has invalid read buffer", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER:
os::Printer::log("FBO has invalid draw buffer", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
os::Printer::log("FBO has one or several incomplete image attachments", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_FORMATS:
os::Printer::log("FBO has one or several image attachments with different internal formats", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
os::Printer::log("FBO has one or several image attachments with different dimensions", ELL_ERROR);
break;
case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
os::Printer::log("FBO missing an image attachment", ELL_ERROR);
break;
case GL_FRAMEBUFFER_UNSUPPORTED:
os::Printer::log("FBO format unsupported", ELL_ERROR);
break;
default:
os::Printer::log("FBO error", ELL_ERROR);
break;
}
return false;
}
COpenGLRenderTarget::COpenGLRenderTarget(COpenGLDriver* driver) : AssignedDepth(false), AssignedStencil(false), RequestTextureUpdate(false), RequestDepthStencilUpdate(false),
BufferID(0), SupportForFBO(false), SupportForMRT(false), Driver(driver)
{
#ifdef _DEBUG
setDebugName("COpenGLRenderTarget");
#endif
DriverType = EDT_OPENGL;
Size = Driver->getScreenSize();
#if defined(GL_VERSION_3_0) || defined(GL_ARB_framebuffer_object) || defined(GL_EXT_framebuffer_object)
SupportForFBO = Driver->FeatureAvailable[COpenGLDriver::IRR_EXT_framebuffer_object] || Driver->FeatureAvailable[COpenGLDriver::IRR_ARB_framebuffer_object];
#endif
SupportForMRT = SupportForFBO && Driver->MaxMultipleRenderTargets > 1 && (Driver->Version >= 200 || Driver->FeatureAvailable[COpenGLDriver::IRR_ARB_draw_buffers] ||
Driver->FeatureAvailable[COpenGLDriver::IRR_ATI_draw_buffers]);
if (SupportForFBO)
Driver->extGlGenFramebuffers(1, &BufferID);
AssignedTexture.set_used(static_cast<u32>(Driver->MaxColorAttachments));
for (u32 i = 0; i < AssignedTexture.size(); ++i)
AssignedTexture[i] = GL_NONE;
}
COpenGLRenderTarget::~COpenGLRenderTarget()
{
if (SupportForFBO && BufferID != 0)
Driver->extGlDeleteFramebuffers(1, &BufferID);
for (u32 i = 0; i < Texture.size(); ++i)
{
if (Texture[i])
Texture[i]->drop();
}
if (DepthStencil)
DepthStencil->drop();
}
void COpenGLRenderTarget::setTexture(const core::array<ITexture*>& texture, ITexture* depthStencil)
{
bool textureUpdate = (Texture != texture) ? true : false;
bool depthStencilUpdate = (DepthStencil != depthStencil) ? true : false;
if (textureUpdate || depthStencilUpdate)
{
// Set color attachments.
if (textureUpdate)
{
for (u32 i = 0; i < Texture.size(); ++i)
{
if (Texture[i])
Texture[i]->drop();
}
if (texture.size() > static_cast<u32>(Driver->MaxColorAttachments))
{
core::stringc message = "This GPU supports up to ";
message += static_cast<u32>(Driver->MaxColorAttachments);
message += " textures per render target.";
os::Printer::log(message.c_str(), ELL_WARNING);
}
Texture.set_used(core::min_(texture.size(), static_cast<u32>(Driver->MaxColorAttachments)));
for (u32 i = 0; i < Texture.size(); ++i)
{
GLuint textureID = (texture[i] && texture[i]->getDriverType() == EDT_OPENGL) ? static_cast<COpenGLTexture*>(texture[i])->getOpenGLTextureName() : 0;
if (textureID != 0)
{
Texture[i] = texture[i];
Texture[i]->grab();
}
else
{
Texture[i] = 0;
}
}
RequestTextureUpdate = true;
}
// Set depth and stencil attachments.
if (depthStencilUpdate)
{
GLuint textureID = (depthStencil && depthStencil->getDriverType() == EDT_OPENGL) ? static_cast<COpenGLTexture*>(depthStencil)->getOpenGLTextureName() : 0;
const ECOLOR_FORMAT textureFormat = (textureID != 0) ? depthStencil->getColorFormat() : ECF_UNKNOWN;
if (IImage::isDepthFormat(textureFormat))
{
DepthStencil = depthStencil;
DepthStencil->grab();
}
else
{
if (DepthStencil)
DepthStencil->drop();
DepthStencil = 0;
}
RequestDepthStencilUpdate = true;
}
// Set size required for a viewport.
ITexture* firstTexture = getTexture();
if (firstTexture)
Size = firstTexture->getSize();
else
{
if (DepthStencil)
Size = DepthStencil->getSize();
else
Size = Driver->getScreenSize();
}
}
}
void COpenGLRenderTarget::update()
{
if (RequestTextureUpdate || RequestDepthStencilUpdate)
{
// Set color attachments.
if (RequestTextureUpdate)
{
// Set new color textures.
const u32 textureSize = core::min_(Texture.size(), AssignedTexture.size());
for (u32 i = 0; i < textureSize; ++i)
{
GLuint textureID = (Texture[i]) ? static_cast<COpenGLTexture*>(Texture[i])->getOpenGLTextureName() : 0;
if (textureID != 0)
{
AssignedTexture[i] = GL_COLOR_ATTACHMENT0 + i;
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, AssignedTexture[i], GL_TEXTURE_2D, textureID, 0);
}
else if (AssignedTexture[i] != GL_NONE)
{
AssignedTexture[i] = GL_NONE;
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, AssignedTexture[i], GL_TEXTURE_2D, 0, 0);
os::Printer::log("Error: Could not set render target.", ELL_ERROR);
}
}
// Reset other render target channels.
for (u32 i = textureSize; i < AssignedTexture.size(); ++i)
{
if (AssignedTexture[i] != GL_NONE)
{
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, AssignedTexture[i], GL_TEXTURE_2D, 0, 0);
AssignedTexture[i] = GL_NONE;
}
}
RequestTextureUpdate = false;
}
// Set depth and stencil attachments.
if (RequestDepthStencilUpdate)
{
const ECOLOR_FORMAT textureFormat = (DepthStencil) ? DepthStencil->getColorFormat() : ECF_UNKNOWN;
if (IImage::isDepthFormat(textureFormat))
{
GLuint textureID = static_cast<COpenGLTexture*>(DepthStencil)->getOpenGLTextureName();
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, textureID, 0);
if (textureFormat == ECF_D24S8)
{
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, textureID, 0);
AssignedStencil = true;
}
else
{
if (AssignedStencil)
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
AssignedStencil = false;
}
AssignedDepth = true;
}
else
{
if (AssignedDepth)
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
if (AssignedStencil)
Driver->extGlFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, 0);
AssignedDepth = false;
AssignedStencil = false;
}
RequestDepthStencilUpdate = false;
}
// Configure drawing operation.
if (SupportForFBO && BufferID != 0)
{
const u32 textureSize = Texture.size();
if (textureSize == 0)
glDrawBuffer(GL_NONE);
else if (textureSize == 1 || !SupportForMRT)
glDrawBuffer(GL_COLOR_ATTACHMENT0);
else
{
Driver->extGlDrawBuffers(core::min_(textureSize, AssignedTexture.size()), AssignedTexture.pointer());
}
}
#ifdef _DEBUG
checkFBOStatus(Driver);
#endif
}
}
GLuint COpenGLRenderTarget::getBufferID() const
{
return BufferID;
}
const core::dimension2d<u32>& COpenGLRenderTarget::getSize() const
{
return Size;
}
ITexture* COpenGLRenderTarget::getTexture() const
{
for (u32 i = 0; i < Texture.size(); ++i)
{
if (Texture[i])
return Texture[i];
}
return 0;
}
}
}
#endif
// Copyright (C) 2015 Patryk Nadrowski
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef __C_OPEN_GL_RENDER_TARGET_H_INCLUDED__
#define __C_OPEN_GL_RENDER_TARGET_H_INCLUDED__
#include "IrrCompileConfig.h"
#ifdef _IRR_COMPILE_WITH_OPENGL_
#include "IRenderTarget.h"
#include "dimension2d.h"
#include "COpenGLExtensionHandler.h"
namespace irr
{
namespace video
{
class COpenGLDriver;
class COpenGLCacheHandler;
class COpenGLRenderTarget : public IRenderTarget
{
public:
COpenGLRenderTarget(COpenGLDriver* driver);
virtual ~COpenGLRenderTarget();
virtual void setTexture(const core::array<ITexture*>& texture, ITexture* depthStencil) _IRR_OVERRIDE_;
void update();
GLuint getBufferID() const;
const core::dimension2d<u32>& getSize() const;
ITexture* getTexture() const;
protected:
core::array<GLenum> AssignedTexture;
bool AssignedDepth;
bool AssignedStencil;
bool RequestTextureUpdate;
bool RequestDepthStencilUpdate;
GLuint BufferID;
core::dimension2d<u32> Size;
bool SupportForFBO;
bool SupportForMRT;
COpenGLDriver* Driver;
};
}
}
#endif
#endif
...@@ -798,7 +798,7 @@ void COpenGLTexture::regenerateMipMapLevels(void* mipmapData) ...@@ -798,7 +798,7 @@ void COpenGLTexture::regenerateMipMapLevels(void* mipmapData)
// hardware moethods for generate mipmaps. // hardware moethods for generate mipmaps.
if (!mipmapData && AutomaticMipmapUpdate && !MipmapLegacyMode) if (!mipmapData && AutomaticMipmapUpdate && !MipmapLegacyMode)
{ {
Driver->extGlGenerateMipmap(GL_TEXTURE_2D); Driver->irrGlGenerateMipmap(GL_TEXTURE_2D);
cacheHandler->TextureCache.set(0, prevTexture); cacheHandler->TextureCache.set(0, prevTexture);
......
...@@ -841,8 +841,6 @@ ...@@ -841,8 +841,6 @@
<Unit filename="COpenGLNormalMapRenderer.h" /> <Unit filename="COpenGLNormalMapRenderer.h" />
<Unit filename="COpenGLParallaxMapRenderer.cpp" /> <Unit filename="COpenGLParallaxMapRenderer.cpp" />
<Unit filename="COpenGLParallaxMapRenderer.h" /> <Unit filename="COpenGLParallaxMapRenderer.h" />
<Unit filename="COpenGLRenderTarget.cpp" />
<Unit filename="COpenGLRenderTarget.h" />
<Unit filename="COpenGLSLMaterialRenderer.cpp" /> <Unit filename="COpenGLSLMaterialRenderer.cpp" />
<Unit filename="COpenGLSLMaterialRenderer.h" /> <Unit filename="COpenGLSLMaterialRenderer.h" />
<Unit filename="COpenGLShaderMaterialRenderer.cpp" /> <Unit filename="COpenGLShaderMaterialRenderer.cpp" />
......
...@@ -1008,7 +1008,17 @@ ...@@ -1008,7 +1008,17 @@
<ClInclude Include="CGeometryCreator.h" /> <ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" /> <ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" /> <ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COpenGLRenderTarget.h" /> <ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="CProfiler.h" /> <ClInclude Include="CProfiler.h" />
<ClInclude Include="CSceneManager.h" /> <ClInclude Include="CSceneManager.h" />
<ClInclude Include="Octree.h" /> <ClInclude Include="Octree.h" />
...@@ -1102,18 +1112,7 @@ ...@@ -1102,18 +1112,7 @@
<ClInclude Include="IZBuffer.h" /> <ClInclude Include="IZBuffer.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="S2DVertex.h" /> <ClInclude Include="S2DVertex.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="glext.h" />
<ClInclude Include="SB3DStructs.h" /> <ClInclude Include="SB3DStructs.h" />
<ClInclude Include="wglext.h" />
<ClInclude Include="CColorConverter.h" /> <ClInclude Include="CColorConverter.h" />
<ClInclude Include="CFPSCounter.h" /> <ClInclude Include="CFPSCounter.h" />
<ClInclude Include="CImage.h" /> <ClInclude Include="CImage.h" />
...@@ -1257,7 +1256,14 @@ ...@@ -1257,7 +1256,14 @@
<ClCompile Include="CGeometryCreator.cpp" /> <ClCompile Include="CGeometryCreator.cpp" />
<ClCompile Include="CMeshCache.cpp" /> <ClCompile Include="CMeshCache.cpp" />
<ClCompile Include="CMeshManipulator.cpp" /> <ClCompile Include="CMeshManipulator.cpp" />
<ClCompile Include="COpenGLRenderTarget.cpp" /> <ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CSceneManager.cpp" /> <ClCompile Include="CSceneManager.cpp" />
<ClCompile Include="C3DSMeshFileLoader.cpp" /> <ClCompile Include="C3DSMeshFileLoader.cpp" />
<ClCompile Include="CSMFMeshFileLoader.cpp" /> <ClCompile Include="CSMFMeshFileLoader.cpp" />
...@@ -1352,14 +1358,6 @@ ...@@ -1352,14 +1358,6 @@
<ClCompile Include="CTRTextureGouraudNoZ.cpp" /> <ClCompile Include="CTRTextureGouraudNoZ.cpp" />
<ClCompile Include="CTRTextureGouraudWire.cpp" /> <ClCompile Include="CTRTextureGouraudWire.cpp" />
<ClCompile Include="CZBuffer.cpp" /> <ClCompile Include="CZBuffer.cpp" />
<ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CColorConverter.cpp" /> <ClCompile Include="CColorConverter.cpp" />
<ClCompile Include="CFPSCounter.cpp" /> <ClCompile Include="CFPSCounter.cpp" />
<ClCompile Include="CImage.cpp" /> <ClCompile Include="CImage.cpp" />
......
...@@ -100,6 +100,9 @@ ...@@ -100,6 +100,9 @@
<Filter Include="Irrlicht\gui"> <Filter Include="Irrlicht\gui">
<UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier> <UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Irrlicht\video\OpenGL Core">
<UniqueIdentifier>{2c9c6ef7-5662-4f11-83cd-921c717d3ab0}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\include\IEventReceiver.h"> <ClInclude Include="..\..\include\IEventReceiver.h">
...@@ -849,39 +852,6 @@ ...@@ -849,39 +852,6 @@
<ClInclude Include="S2DVertex.h"> <ClInclude Include="S2DVertex.h">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="glext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="wglext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CColorConverter.h"> <ClInclude Include="CColorConverter.h">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClInclude> </ClInclude>
...@@ -1309,15 +1279,45 @@ ...@@ -1309,15 +1279,45 @@
<ClInclude Include="CD3D9RenderTarget.h"> <ClInclude Include="CD3D9RenderTarget.h">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLRenderTarget.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CB3DMeshWriter.h"> <ClInclude Include="CB3DMeshWriter.h">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\scene\writers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SB3DStructs.h"> <ClInclude Include="SB3DStructs.h">
<Filter>Irrlicht\scene</Filter> <Filter>Irrlicht\scene</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreRenderTarget.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\changes.txt"> <None Include="..\..\changes.txt">
...@@ -1619,30 +1619,6 @@ ...@@ -1619,30 +1619,6 @@
<ClCompile Include="CZBuffer.cpp"> <ClCompile Include="CZBuffer.cpp">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="CColorConverter.cpp"> <ClCompile Include="CColorConverter.cpp">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClCompile> </ClCompile>
...@@ -2246,12 +2222,33 @@ ...@@ -2246,12 +2222,33 @@
<ClCompile Include="CD3D9RenderTarget.cpp"> <ClCompile Include="CD3D9RenderTarget.cpp">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLRenderTarget.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="CB3DMeshWriter.cpp"> <ClCompile Include="CB3DMeshWriter.cpp">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\scene\writers</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="Irrlicht.rc" /> <ResourceCompile Include="Irrlicht.rc" />
......
...@@ -1001,14 +1001,24 @@ ...@@ -1001,14 +1001,24 @@
<ClInclude Include="..\..\include\IGUIToolbar.h" /> <ClInclude Include="..\..\include\IGUIToolbar.h" />
<ClInclude Include="..\..\include\IGUITreeView.h" /> <ClInclude Include="..\..\include\IGUITreeView.h" />
<ClInclude Include="..\..\include\IGUIWindow.h" /> <ClInclude Include="..\..\include\IGUIWindow.h" />
<ClInclude Include="CB3DMeshWriter.h" /> <ClInclude Include="CB3DMeshWriter.h" />
<ClInclude Include="CD3D9RenderTarget.h" /> <ClInclude Include="CD3D9RenderTarget.h" />
<ClInclude Include="CDefaultSceneNodeAnimatorFactory.h" /> <ClInclude Include="CDefaultSceneNodeAnimatorFactory.h" />
<ClInclude Include="CDefaultSceneNodeFactory.h" /> <ClInclude Include="CDefaultSceneNodeFactory.h" />
<ClInclude Include="CGeometryCreator.h" /> <ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" /> <ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" /> <ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COpenGLRenderTarget.h" /> <ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="CSceneManager.h" /> <ClInclude Include="CSceneManager.h" />
<ClInclude Include="Octree.h" /> <ClInclude Include="Octree.h" />
<ClInclude Include="CSMFMeshFileLoader.h" /> <ClInclude Include="CSMFMeshFileLoader.h" />
...@@ -1101,18 +1111,7 @@ ...@@ -1101,18 +1111,7 @@
<ClInclude Include="IZBuffer.h" /> <ClInclude Include="IZBuffer.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="S2DVertex.h" /> <ClInclude Include="S2DVertex.h" />
<ClInclude Include="COpenGLCacheHandler.h" /> <ClInclude Include="SB3DStructs.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="glext.h" />
<ClInclude Include="SB3DStructs.h" />
<ClInclude Include="wglext.h" />
<ClInclude Include="CColorConverter.h" /> <ClInclude Include="CColorConverter.h" />
<ClInclude Include="CFPSCounter.h" /> <ClInclude Include="CFPSCounter.h" />
<ClInclude Include="CImage.h" /> <ClInclude Include="CImage.h" />
...@@ -1250,14 +1249,21 @@ ...@@ -1250,14 +1249,21 @@
<None Include="..\..\readme.txt" /> <None Include="..\..\readme.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="CB3DMeshWriter.cpp" /> <ClCompile Include="CB3DMeshWriter.cpp" />
<ClCompile Include="CD3D9RenderTarget.cpp" /> <ClCompile Include="CD3D9RenderTarget.cpp" />
<ClCompile Include="CDefaultSceneNodeAnimatorFactory.cpp" /> <ClCompile Include="CDefaultSceneNodeAnimatorFactory.cpp" />
<ClCompile Include="CDefaultSceneNodeFactory.cpp" /> <ClCompile Include="CDefaultSceneNodeFactory.cpp" />
<ClCompile Include="CGeometryCreator.cpp" /> <ClCompile Include="CGeometryCreator.cpp" />
<ClCompile Include="CMeshCache.cpp" /> <ClCompile Include="CMeshCache.cpp" />
<ClCompile Include="CMeshManipulator.cpp" /> <ClCompile Include="CMeshManipulator.cpp" />
<ClCompile Include="COpenGLRenderTarget.cpp" /> <ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CSceneManager.cpp" /> <ClCompile Include="CSceneManager.cpp" />
<ClCompile Include="C3DSMeshFileLoader.cpp" /> <ClCompile Include="C3DSMeshFileLoader.cpp" />
<ClCompile Include="CSMFMeshFileLoader.cpp" /> <ClCompile Include="CSMFMeshFileLoader.cpp" />
...@@ -1352,14 +1358,6 @@ ...@@ -1352,14 +1358,6 @@
<ClCompile Include="CTRTextureGouraudNoZ.cpp" /> <ClCompile Include="CTRTextureGouraudNoZ.cpp" />
<ClCompile Include="CTRTextureGouraudWire.cpp" /> <ClCompile Include="CTRTextureGouraudWire.cpp" />
<ClCompile Include="CZBuffer.cpp" /> <ClCompile Include="CZBuffer.cpp" />
<ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CColorConverter.cpp" /> <ClCompile Include="CColorConverter.cpp" />
<ClCompile Include="CFPSCounter.cpp" /> <ClCompile Include="CFPSCounter.cpp" />
<ClCompile Include="CImage.cpp" /> <ClCompile Include="CImage.cpp" />
......
...@@ -100,6 +100,9 @@ ...@@ -100,6 +100,9 @@
<Filter Include="Irrlicht\gui"> <Filter Include="Irrlicht\gui">
<UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier> <UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Irrlicht\video\OpenGL Core">
<UniqueIdentifier>{bc1d03a2-7534-4b2f-857f-be5e0ab41dde}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\include\IEventReceiver.h"> <ClInclude Include="..\..\include\IEventReceiver.h">
...@@ -855,39 +858,6 @@ ...@@ -855,39 +858,6 @@
<ClInclude Include="S2DVertex.h"> <ClInclude Include="S2DVertex.h">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="glext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="wglext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CColorConverter.h"> <ClInclude Include="CColorConverter.h">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClInclude> </ClInclude>
...@@ -1309,15 +1279,45 @@ ...@@ -1309,15 +1279,45 @@
<ClInclude Include="CD3D9RenderTarget.h"> <ClInclude Include="CD3D9RenderTarget.h">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLRenderTarget.h"> <ClInclude Include="CB3DMeshWriter.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CB3DMeshWriter.h">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\scene\writers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SB3DStructs.h"> <ClInclude Include="SB3DStructs.h">
<Filter>Irrlicht\scene</Filter> <Filter>Irrlicht\scene</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreRenderTarget.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\changes.txt"> <None Include="..\..\changes.txt">
...@@ -1619,30 +1619,6 @@ ...@@ -1619,30 +1619,6 @@
<ClCompile Include="CZBuffer.cpp"> <ClCompile Include="CZBuffer.cpp">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="CColorConverter.cpp"> <ClCompile Include="CColorConverter.cpp">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClCompile> </ClCompile>
...@@ -2246,11 +2222,32 @@ ...@@ -2246,11 +2222,32 @@
<ClCompile Include="CD3D9RenderTarget.cpp"> <ClCompile Include="CD3D9RenderTarget.cpp">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLRenderTarget.cpp"> <ClCompile Include="CB3DMeshWriter.cpp">
<Filter>Irrlicht\scene\writers</Filter>
</ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter> <Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CB3DMeshWriter.cpp"> <ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -1008,7 +1008,17 @@ ...@@ -1008,7 +1008,17 @@
<ClInclude Include="CGeometryCreator.h" /> <ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" /> <ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" /> <ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COpenGLRenderTarget.h" /> <ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="CSceneManager.h" /> <ClInclude Include="CSceneManager.h" />
<ClInclude Include="Octree.h" /> <ClInclude Include="Octree.h" />
<ClInclude Include="CSMFMeshFileLoader.h" /> <ClInclude Include="CSMFMeshFileLoader.h" />
...@@ -1101,18 +1111,7 @@ ...@@ -1101,18 +1111,7 @@
<ClInclude Include="IZBuffer.h" /> <ClInclude Include="IZBuffer.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="S2DVertex.h" /> <ClInclude Include="S2DVertex.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="glext.h" />
<ClInclude Include="SB3DStructs.h" /> <ClInclude Include="SB3DStructs.h" />
<ClInclude Include="wglext.h" />
<ClInclude Include="CColorConverter.h" /> <ClInclude Include="CColorConverter.h" />
<ClInclude Include="CFPSCounter.h" /> <ClInclude Include="CFPSCounter.h" />
<ClInclude Include="CImage.h" /> <ClInclude Include="CImage.h" />
...@@ -1257,7 +1256,14 @@ ...@@ -1257,7 +1256,14 @@
<ClCompile Include="CGeometryCreator.cpp" /> <ClCompile Include="CGeometryCreator.cpp" />
<ClCompile Include="CMeshCache.cpp" /> <ClCompile Include="CMeshCache.cpp" />
<ClCompile Include="CMeshManipulator.cpp" /> <ClCompile Include="CMeshManipulator.cpp" />
<ClCompile Include="COpenGLRenderTarget.cpp" /> <ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CSceneManager.cpp" /> <ClCompile Include="CSceneManager.cpp" />
<ClCompile Include="C3DSMeshFileLoader.cpp" /> <ClCompile Include="C3DSMeshFileLoader.cpp" />
<ClCompile Include="CSMFMeshFileLoader.cpp" /> <ClCompile Include="CSMFMeshFileLoader.cpp" />
...@@ -1352,14 +1358,6 @@ ...@@ -1352,14 +1358,6 @@
<ClCompile Include="CTRTextureGouraudNoZ.cpp" /> <ClCompile Include="CTRTextureGouraudNoZ.cpp" />
<ClCompile Include="CTRTextureGouraudWire.cpp" /> <ClCompile Include="CTRTextureGouraudWire.cpp" />
<ClCompile Include="CZBuffer.cpp" /> <ClCompile Include="CZBuffer.cpp" />
<ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CColorConverter.cpp" /> <ClCompile Include="CColorConverter.cpp" />
<ClCompile Include="CFPSCounter.cpp" /> <ClCompile Include="CFPSCounter.cpp" />
<ClCompile Include="CImage.cpp" /> <ClCompile Include="CImage.cpp" />
......
...@@ -100,6 +100,9 @@ ...@@ -100,6 +100,9 @@
<Filter Include="Irrlicht\gui"> <Filter Include="Irrlicht\gui">
<UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier> <UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Irrlicht\video\OpenGL Core">
<UniqueIdentifier>{d6b83fe4-204d-4a95-aeb7-5b8ebdec7e5d}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\include\IEventReceiver.h"> <ClInclude Include="..\..\include\IEventReceiver.h">
...@@ -855,39 +858,6 @@ ...@@ -855,39 +858,6 @@
<ClInclude Include="S2DVertex.h"> <ClInclude Include="S2DVertex.h">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="glext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="wglext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CColorConverter.h"> <ClInclude Include="CColorConverter.h">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClInclude> </ClInclude>
...@@ -1309,15 +1279,45 @@ ...@@ -1309,15 +1279,45 @@
<ClInclude Include="CD3D9RenderTarget.h"> <ClInclude Include="CD3D9RenderTarget.h">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLRenderTarget.h"> <ClInclude Include="CB3DMeshWriter.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CB3DMeshWriter.h">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\scene\writers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SB3DStructs.h"> <ClInclude Include="SB3DStructs.h">
<Filter>Irrlicht\scene</Filter> <Filter>Irrlicht\scene</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreRenderTarget.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\changes.txt"> <None Include="..\..\changes.txt">
...@@ -1619,30 +1619,6 @@ ...@@ -1619,30 +1619,6 @@
<ClCompile Include="CZBuffer.cpp"> <ClCompile Include="CZBuffer.cpp">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="CColorConverter.cpp"> <ClCompile Include="CColorConverter.cpp">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClCompile> </ClCompile>
...@@ -2246,11 +2222,32 @@ ...@@ -2246,11 +2222,32 @@
<ClCompile Include="CD3D9RenderTarget.cpp"> <ClCompile Include="CD3D9RenderTarget.cpp">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLRenderTarget.cpp"> <ClCompile Include="CB3DMeshWriter.cpp">
<Filter>Irrlicht\scene\writers</Filter>
</ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter> <Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CB3DMeshWriter.cpp"> <ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -1018,7 +1018,17 @@ ...@@ -1018,7 +1018,17 @@
<ClInclude Include="CGeometryCreator.h" /> <ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" /> <ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" /> <ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COpenGLRenderTarget.h" /> <ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="CSceneManager.h" /> <ClInclude Include="CSceneManager.h" />
<ClInclude Include="Octree.h" /> <ClInclude Include="Octree.h" />
<ClInclude Include="CSMFMeshFileLoader.h" /> <ClInclude Include="CSMFMeshFileLoader.h" />
...@@ -1111,18 +1121,7 @@ ...@@ -1111,18 +1121,7 @@
<ClInclude Include="IZBuffer.h" /> <ClInclude Include="IZBuffer.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="S2DVertex.h" /> <ClInclude Include="S2DVertex.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
<ClInclude Include="COpenGLDriver.h" />
<ClInclude Include="COpenGLExtensionHandler.h" />
<ClInclude Include="COpenGLMaterialRenderer.h" />
<ClInclude Include="COpenGLNormalMapRenderer.h" />
<ClInclude Include="COpenGLParallaxMapRenderer.h" />
<ClInclude Include="COpenGLShaderMaterialRenderer.h" />
<ClInclude Include="COpenGLSLMaterialRenderer.h" />
<ClInclude Include="COpenGLTexture.h" />
<ClInclude Include="glext.h" />
<ClInclude Include="SB3DStructs.h" /> <ClInclude Include="SB3DStructs.h" />
<ClInclude Include="wglext.h" />
<ClInclude Include="CColorConverter.h" /> <ClInclude Include="CColorConverter.h" />
<ClInclude Include="CFPSCounter.h" /> <ClInclude Include="CFPSCounter.h" />
<ClInclude Include="CImage.h" /> <ClInclude Include="CImage.h" />
...@@ -1267,7 +1266,14 @@ ...@@ -1267,7 +1266,14 @@
<ClCompile Include="CGeometryCreator.cpp" /> <ClCompile Include="CGeometryCreator.cpp" />
<ClCompile Include="CMeshCache.cpp" /> <ClCompile Include="CMeshCache.cpp" />
<ClCompile Include="CMeshManipulator.cpp" /> <ClCompile Include="CMeshManipulator.cpp" />
<ClCompile Include="COpenGLRenderTarget.cpp" /> <ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CSceneManager.cpp" /> <ClCompile Include="CSceneManager.cpp" />
<ClCompile Include="C3DSMeshFileLoader.cpp" /> <ClCompile Include="C3DSMeshFileLoader.cpp" />
<ClCompile Include="CSMFMeshFileLoader.cpp" /> <ClCompile Include="CSMFMeshFileLoader.cpp" />
...@@ -1362,14 +1368,6 @@ ...@@ -1362,14 +1368,6 @@
<ClCompile Include="CTRTextureGouraudNoZ.cpp" /> <ClCompile Include="CTRTextureGouraudNoZ.cpp" />
<ClCompile Include="CTRTextureGouraudWire.cpp" /> <ClCompile Include="CTRTextureGouraudWire.cpp" />
<ClCompile Include="CZBuffer.cpp" /> <ClCompile Include="CZBuffer.cpp" />
<ClCompile Include="COpenGLCacheHandler.cpp" />
<ClCompile Include="COpenGLDriver.cpp" />
<ClCompile Include="COpenGLExtensionHandler.cpp" />
<ClCompile Include="COpenGLNormalMapRenderer.cpp" />
<ClCompile Include="COpenGLParallaxMapRenderer.cpp" />
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp" />
<ClCompile Include="COpenGLSLMaterialRenderer.cpp" />
<ClCompile Include="COpenGLTexture.cpp" />
<ClCompile Include="CColorConverter.cpp" /> <ClCompile Include="CColorConverter.cpp" />
<ClCompile Include="CFPSCounter.cpp" /> <ClCompile Include="CFPSCounter.cpp" />
<ClCompile Include="CImage.cpp" /> <ClCompile Include="CImage.cpp" />
......
...@@ -100,6 +100,9 @@ ...@@ -100,6 +100,9 @@
<Filter Include="Irrlicht\gui"> <Filter Include="Irrlicht\gui">
<UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier> <UniqueIdentifier>{da421793-4674-481c-be46-f7a44e78aee5}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Irrlicht\video\OpenGL Core">
<UniqueIdentifier>{628de03e-6872-4682-b1f6-d3cc453c9d55}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\include\IEventReceiver.h"> <ClInclude Include="..\..\include\IEventReceiver.h">
...@@ -855,39 +858,6 @@ ...@@ -855,39 +858,6 @@
<ClInclude Include="S2DVertex.h"> <ClInclude Include="S2DVertex.h">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="glext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="wglext.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CColorConverter.h"> <ClInclude Include="CColorConverter.h">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClInclude> </ClInclude>
...@@ -1309,15 +1279,45 @@ ...@@ -1309,15 +1279,45 @@
<ClInclude Include="CD3D9RenderTarget.h"> <ClInclude Include="CD3D9RenderTarget.h">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLRenderTarget.h"> <ClInclude Include="CB3DMeshWriter.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="CB3DMeshWriter.h">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\scene\writers</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SB3DStructs.h"> <ClInclude Include="SB3DStructs.h">
<Filter>Irrlicht\scene</Filter> <Filter>Irrlicht\scene</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="COpenGLCacheHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLDriver.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLExtensionHandler.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLNormalMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLParallaxMapRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLShaderMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLSLMaterialRenderer.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreRenderTarget.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\changes.txt"> <None Include="..\..\changes.txt">
...@@ -1619,30 +1619,6 @@ ...@@ -1619,30 +1619,6 @@
<ClCompile Include="CZBuffer.cpp"> <ClCompile Include="CZBuffer.cpp">
<Filter>Irrlicht\video\Software</Filter> <Filter>Irrlicht\video\Software</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="CColorConverter.cpp"> <ClCompile Include="CColorConverter.cpp">
<Filter>Irrlicht\video\Null</Filter> <Filter>Irrlicht\video\Null</Filter>
</ClCompile> </ClCompile>
...@@ -2246,11 +2222,32 @@ ...@@ -2246,11 +2222,32 @@
<ClCompile Include="CD3D9RenderTarget.cpp"> <ClCompile Include="CD3D9RenderTarget.cpp">
<Filter>Irrlicht\video\Direct3D9</Filter> <Filter>Irrlicht\video\Direct3D9</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="COpenGLRenderTarget.cpp"> <ClCompile Include="CB3DMeshWriter.cpp">
<Filter>Irrlicht\scene\writers</Filter>
</ClCompile>
<ClCompile Include="COpenGLCacheHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter> <Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="CB3DMeshWriter.cpp"> <ClCompile Include="COpenGLDriver.cpp">
<Filter>Irrlicht\scene\writers</Filter> <Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLExtensionHandler.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLNormalMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLParallaxMapRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLShaderMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLSLMaterialRenderer.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile>
<ClCompile Include="COpenGLTexture.cpp">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -2231,14 +2231,6 @@ ...@@ -2231,14 +2231,6 @@
RelativePath="COpenGLParallaxMapRenderer.h" RelativePath="COpenGLParallaxMapRenderer.h"
> >
</File> </File>
<File
RelativePath="COpenGLRenderTarget.cpp"
>
</File>
<File
RelativePath="COpenGLRenderTarget.h"
>
</File>
<File <File
RelativePath="COpenGLShaderMaterialRenderer.cpp" RelativePath="COpenGLShaderMaterialRenderer.cpp"
> >
...@@ -2272,6 +2264,18 @@ ...@@ -2272,6 +2264,18 @@
> >
</File> </File>
</Filter> </Filter>
<Filter
Name="OpenGL Core"
>
<File
RelativePath="COGLCoreFeature.h"
>
</File>
<File
RelativePath="COGLCoreRenderTarget.h"
>
</File>
</Filter>
<Filter <Filter
Name="Null" Name="Null"
> >
......
...@@ -38,7 +38,7 @@ IRRMESHOBJ = $(IRRMESHLOADER) $(IRRMESHWRITER) \ ...@@ -38,7 +38,7 @@ IRRMESHOBJ = $(IRRMESHLOADER) $(IRRMESHWRITER) \
IRROBJ = CBillboardSceneNode.o CCameraSceneNode.o CDummyTransformationSceneNode.o CEmptySceneNode.o CGeometryCreator.o CLightSceneNode.o CMeshManipulator.o CMetaTriangleSelector.o COctreeSceneNode.o COctreeTriangleSelector.o CSceneCollisionManager.o CSceneManager.o CShadowVolumeSceneNode.o CSkyBoxSceneNode.o CSkyDomeSceneNode.o CTerrainSceneNode.o CTerrainTriangleSelector.o CVolumeLightSceneNode.o CCubeSceneNode.o CSphereSceneNode.o CTextSceneNode.o CTriangleBBSelector.o CTriangleSelector.o CWaterSurfaceSceneNode.o CMeshCache.o CDefaultSceneNodeAnimatorFactory.o CDefaultSceneNodeFactory.o CSceneLoaderIrr.o IRROBJ = CBillboardSceneNode.o CCameraSceneNode.o CDummyTransformationSceneNode.o CEmptySceneNode.o CGeometryCreator.o CLightSceneNode.o CMeshManipulator.o CMetaTriangleSelector.o COctreeSceneNode.o COctreeTriangleSelector.o CSceneCollisionManager.o CSceneManager.o CShadowVolumeSceneNode.o CSkyBoxSceneNode.o CSkyDomeSceneNode.o CTerrainSceneNode.o CTerrainTriangleSelector.o CVolumeLightSceneNode.o CCubeSceneNode.o CSphereSceneNode.o CTextSceneNode.o CTriangleBBSelector.o CTriangleSelector.o CWaterSurfaceSceneNode.o CMeshCache.o CDefaultSceneNodeAnimatorFactory.o CDefaultSceneNodeFactory.o CSceneLoaderIrr.o
IRRPARTICLEOBJ = CParticleAnimatedMeshSceneNodeEmitter.o CParticleBoxEmitter.o CParticleCylinderEmitter.o CParticleMeshEmitter.o CParticlePointEmitter.o CParticleRingEmitter.o CParticleSphereEmitter.o CParticleAttractionAffector.o CParticleFadeOutAffector.o CParticleGravityAffector.o CParticleRotationAffector.o CParticleSystemSceneNode.o CParticleScaleAffector.o IRRPARTICLEOBJ = CParticleAnimatedMeshSceneNodeEmitter.o CParticleBoxEmitter.o CParticleCylinderEmitter.o CParticleMeshEmitter.o CParticlePointEmitter.o CParticleRingEmitter.o CParticleSphereEmitter.o CParticleAttractionAffector.o CParticleFadeOutAffector.o CParticleGravityAffector.o CParticleRotationAffector.o CParticleSystemSceneNode.o CParticleScaleAffector.o
IRRANIMOBJ = CSceneNodeAnimatorCameraFPS.o CSceneNodeAnimatorCameraMaya.o CSceneNodeAnimatorCollisionResponse.o CSceneNodeAnimatorDelete.o CSceneNodeAnimatorFlyCircle.o CSceneNodeAnimatorFlyStraight.o CSceneNodeAnimatorFollowSpline.o CSceneNodeAnimatorRotation.o CSceneNodeAnimatorTexture.o IRRANIMOBJ = CSceneNodeAnimatorCameraFPS.o CSceneNodeAnimatorCameraMaya.o CSceneNodeAnimatorCollisionResponse.o CSceneNodeAnimatorDelete.o CSceneNodeAnimatorFlyCircle.o CSceneNodeAnimatorFlyStraight.o CSceneNodeAnimatorFollowSpline.o CSceneNodeAnimatorRotation.o CSceneNodeAnimatorTexture.o
IRRDRVROBJ = CNullDriver.o COpenGLCacheHandler.o COpenGLDriver.o COpenGLNormalMapRenderer.o COpenGLParallaxMapRenderer.o COpenGLRenderTarget.o COpenGLShaderMaterialRenderer.o COpenGLTexture.o COpenGLSLMaterialRenderer.o COpenGLExtensionHandler.o CD3D9Driver.o CD3D9HLSLMaterialRenderer.o CD3D9NormalMapRenderer.o CD3D9ParallaxMapRenderer.o CD3D9ShaderMaterialRenderer.o CD3D9Texture.o IRRDRVROBJ = CNullDriver.o COpenGLCacheHandler.o COpenGLDriver.o COpenGLNormalMapRenderer.o COpenGLParallaxMapRenderer.o COpenGLShaderMaterialRenderer.o COpenGLTexture.o COpenGLSLMaterialRenderer.o COpenGLExtensionHandler.o CD3D9Driver.o CD3D9HLSLMaterialRenderer.o CD3D9NormalMapRenderer.o CD3D9ParallaxMapRenderer.o CD3D9ShaderMaterialRenderer.o CD3D9Texture.o
IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o CImageLoaderDDS.o CImageLoaderJPG.o CImageLoaderPCX.o CImageLoaderPNG.o CImageLoaderPSD.o CImageLoaderTGA.o CImageLoaderPPM.o CImageLoaderWAL.o CImageLoaderRGB.o \ IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o CImageLoaderDDS.o CImageLoaderJPG.o CImageLoaderPCX.o CImageLoaderPNG.o CImageLoaderPSD.o CImageLoaderTGA.o CImageLoaderPPM.o CImageLoaderWAL.o CImageLoaderRGB.o \
CImageWriterBMP.o CImageWriterJPG.o CImageWriterPCX.o CImageWriterPNG.o CImageWriterPPM.o CImageWriterPSD.o CImageWriterTGA.o CImageWriterBMP.o CImageWriterJPG.o CImageWriterPCX.o CImageWriterPNG.o CImageWriterPPM.o CImageWriterPSD.o CImageWriterTGA.o
IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ) IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment