mirror of
https://github.com/love2d/love.git
synced 2026-08-16 16:20:42 +02:00
Merged default into minor
--HG-- branch : minor
This commit is contained in:
@@ -89,16 +89,6 @@ bool Graphics::getConstant(Support in, const char *&out)
|
||||
return support.find(in, out);
|
||||
}
|
||||
|
||||
bool Graphics::getConstant(const char *in, RendererInfo &out)
|
||||
{
|
||||
return rendererInfo.find(in, out);
|
||||
}
|
||||
|
||||
bool Graphics::getConstant(RendererInfo in, const char *&out)
|
||||
{
|
||||
return rendererInfo.find(in, out);
|
||||
}
|
||||
|
||||
bool Graphics::getConstant(const char *in, SystemLimit &out)
|
||||
{
|
||||
return systemLimits.find(in, out);
|
||||
@@ -169,16 +159,6 @@ StringMap<Graphics::Support, Graphics::SUPPORT_MAX_ENUM>::Entry Graphics::suppor
|
||||
|
||||
StringMap<Graphics::Support, Graphics::SUPPORT_MAX_ENUM> Graphics::support(Graphics::supportEntries, sizeof(Graphics::supportEntries));
|
||||
|
||||
StringMap<Graphics::RendererInfo, Graphics::RENDERER_INFO_MAX_ENUM>::Entry Graphics::rendererInfoEntries[] =
|
||||
{
|
||||
{ "name", Graphics::RENDERER_INFO_NAME },
|
||||
{ "version", Graphics::RENDERER_INFO_VERSION },
|
||||
{ "vendor", Graphics::RENDERER_INFO_VENDOR },
|
||||
{ "device", Graphics::RENDERER_INFO_DEVICE },
|
||||
};
|
||||
|
||||
StringMap<Graphics::RendererInfo, Graphics::RENDERER_INFO_MAX_ENUM> Graphics::rendererInfo(Graphics::rendererInfoEntries, sizeof(Graphics::rendererInfoEntries));
|
||||
|
||||
StringMap<Graphics::SystemLimit, Graphics::LIMIT_MAX_ENUM>::Entry Graphics::systemLimitEntries[] =
|
||||
{
|
||||
{"pointsize", Graphics::LIMIT_POINT_SIZE},
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
#include "common/Module.h"
|
||||
#include "common/StringMap.h"
|
||||
|
||||
// C++
|
||||
#include <string>
|
||||
|
||||
namespace love
|
||||
{
|
||||
namespace graphics
|
||||
@@ -88,15 +91,6 @@ public:
|
||||
SUPPORT_MAX_ENUM
|
||||
};
|
||||
|
||||
enum RendererInfo
|
||||
{
|
||||
RENDERER_INFO_NAME,
|
||||
RENDERER_INFO_VERSION,
|
||||
RENDERER_INFO_VENDOR,
|
||||
RENDERER_INFO_DEVICE,
|
||||
RENDERER_INFO_MAX_ENUM
|
||||
};
|
||||
|
||||
enum SystemLimit
|
||||
{
|
||||
LIMIT_POINT_SIZE,
|
||||
@@ -106,6 +100,14 @@ public:
|
||||
LIMIT_MAX_ENUM
|
||||
};
|
||||
|
||||
struct RendererInfo
|
||||
{
|
||||
std::string name;
|
||||
std::string version;
|
||||
std::string vendor;
|
||||
std::string device;
|
||||
};
|
||||
|
||||
virtual ~Graphics();
|
||||
|
||||
/**
|
||||
@@ -144,9 +146,6 @@ public:
|
||||
static bool getConstant(const char *in, Support &out);
|
||||
static bool getConstant(Support in, const char *&out);
|
||||
|
||||
static bool getConstant(const char *in, RendererInfo &out);
|
||||
static bool getConstant(RendererInfo in, const char *&out);
|
||||
|
||||
static bool getConstant(const char *in, SystemLimit &out);
|
||||
static bool getConstant(SystemLimit in, const char *&out);
|
||||
|
||||
@@ -170,9 +169,6 @@ private:
|
||||
static StringMap<Support, SUPPORT_MAX_ENUM>::Entry supportEntries[];
|
||||
static StringMap<Support, SUPPORT_MAX_ENUM> support;
|
||||
|
||||
static StringMap<RendererInfo, RENDERER_INFO_MAX_ENUM>::Entry rendererInfoEntries[];
|
||||
static StringMap<RendererInfo, RENDERER_INFO_MAX_ENUM> rendererInfo;
|
||||
|
||||
static StringMap<SystemLimit, LIMIT_MAX_ENUM>::Entry systemLimitEntries[];
|
||||
static StringMap<SystemLimit, LIMIT_MAX_ENUM> systemLimits;
|
||||
|
||||
|
||||
@@ -1051,31 +1051,30 @@ love::image::ImageData *Graphics::newScreenshot(love::image::Image *image, bool
|
||||
return img;
|
||||
}
|
||||
|
||||
std::string Graphics::getRendererInfo(Graphics::RendererInfo infotype) const
|
||||
Graphics::RendererInfo Graphics::getRendererInfo() const
|
||||
{
|
||||
const char *infostr = 0;
|
||||
RendererInfo info;
|
||||
info.name = "OpenGL";
|
||||
|
||||
switch (infotype)
|
||||
{
|
||||
case Graphics::RENDERER_INFO_NAME:
|
||||
default:
|
||||
infostr = "OpenGL";
|
||||
break;
|
||||
case Graphics::RENDERER_INFO_VERSION:
|
||||
infostr = (const char *) glGetString(GL_VERSION);
|
||||
break;
|
||||
case Graphics::RENDERER_INFO_VENDOR:
|
||||
infostr = (const char *) glGetString(GL_VENDOR);
|
||||
break;
|
||||
case Graphics::RENDERER_INFO_DEVICE:
|
||||
infostr = (const char *) glGetString(GL_RENDERER);
|
||||
break;
|
||||
}
|
||||
const char *str = (const char *) glGetString(GL_VERSION);
|
||||
if (str)
|
||||
info.version = str;
|
||||
else
|
||||
throw love::Exception("Cannot retrieve renderer version information.");
|
||||
|
||||
if (!infostr)
|
||||
throw love::Exception("Cannot retrieve renderer information.");
|
||||
str = (const char *) glGetString(GL_VENDOR);
|
||||
if (str)
|
||||
info.vendor = str;
|
||||
else
|
||||
throw love::Exception("Cannot retrieve renderer vendor information.");
|
||||
|
||||
return std::string(infostr);
|
||||
str = (const char *) glGetString(GL_RENDERER);
|
||||
if (str)
|
||||
info.device = str;
|
||||
else
|
||||
throw love::Exception("Cannot retrieve renderer device information.");
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
double Graphics::getSystemLimit(SystemLimit limittype) const
|
||||
|
||||
@@ -431,12 +431,11 @@ public:
|
||||
love::image::ImageData *newScreenshot(love::image::Image *image, bool copyAlpha = true);
|
||||
|
||||
/**
|
||||
* Returns a string containing system-dependent renderer information.
|
||||
* Returned string can vary greatly between systems! Do not rely on it for
|
||||
* Returns system-dependent renderer information.
|
||||
* Returned string s can vary greatly between systems! Do not rely on it for
|
||||
* anything!
|
||||
* @param infotype The type of information to return.
|
||||
**/
|
||||
std::string getRendererInfo(Graphics::RendererInfo infotype) const;
|
||||
RendererInfo getRendererInfo() const;
|
||||
|
||||
/**
|
||||
* Gets the system-dependent numeric limit for the specified parameter.
|
||||
|
||||
@@ -79,6 +79,9 @@ Mesh::Mesh(int vertexcount, Mesh::DrawMode mode)
|
||||
|
||||
Mesh::~Mesh()
|
||||
{
|
||||
if (texture)
|
||||
texture->release();
|
||||
|
||||
delete vbo;
|
||||
delete ibo;
|
||||
}
|
||||
|
||||
@@ -46,8 +46,8 @@ SpriteBatch::SpriteBatch(Texture *texture, int size, int usage)
|
||||
, size(size)
|
||||
, next(0)
|
||||
, color(0)
|
||||
, array_buf(0)
|
||||
, element_buf(0)
|
||||
, array_buf(nullptr)
|
||||
, element_buf(nullptr)
|
||||
, buffer_used_offset(0)
|
||||
, buffer_used_size(0)
|
||||
{
|
||||
|
||||
@@ -21,18 +21,12 @@
|
||||
#include "VertexBuffer.h"
|
||||
|
||||
#include "common/Exception.h"
|
||||
#include "common/config.h"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
// Conflicts with std::numeric_limits<GLushort>::max() (Windows).
|
||||
#ifdef max
|
||||
# undef max
|
||||
#endif
|
||||
|
||||
namespace love
|
||||
{
|
||||
namespace graphics
|
||||
@@ -55,7 +49,7 @@ VertexBuffer::VertexBuffer(size_t size, GLenum target, GLenum usage, MemoryBacki
|
||||
, usage(usage)
|
||||
, backing(backing)
|
||||
, vbo(0)
|
||||
, memory_map(0)
|
||||
, memory_map(nullptr)
|
||||
, is_dirty(true)
|
||||
{
|
||||
if (getMemoryBacking() == BACKING_FULL)
|
||||
@@ -207,7 +201,7 @@ bool VertexBuffer::load(bool restore)
|
||||
VertexBuffer::Bind bind(*this);
|
||||
|
||||
// Copy the old buffer only if 'restore' was requested.
|
||||
const GLvoid *src = restore ? memory_map : 0;
|
||||
const GLvoid *src = restore ? memory_map : nullptr;
|
||||
|
||||
while (GL_NO_ERROR != glGetError())
|
||||
/* clear error messages */;
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#define LOVE_GRAPHICS_OPENGL_VERTEX_BUFFER_H
|
||||
|
||||
// LOVE
|
||||
#include "common/config.h"
|
||||
#include "graphics/Volatile.h"
|
||||
|
||||
// OpenGL
|
||||
|
||||
@@ -1018,20 +1018,13 @@ int w_hasCanvasFormat(lua_State *L)
|
||||
|
||||
int w_getRendererInfo(lua_State *L)
|
||||
{
|
||||
std::string name, version, vendor, device;
|
||||
|
||||
luax_catchexcept(L, [&]() {
|
||||
name = instance->getRendererInfo(Graphics::RENDERER_INFO_NAME);
|
||||
version = instance->getRendererInfo(Graphics::RENDERER_INFO_VERSION);
|
||||
vendor = instance->getRendererInfo(Graphics::RENDERER_INFO_VENDOR);
|
||||
device = instance->getRendererInfo(Graphics::RENDERER_INFO_DEVICE);
|
||||
});
|
||||
|
||||
luax_pushstring(L, name);
|
||||
luax_pushstring(L, version);
|
||||
luax_pushstring(L, vendor);
|
||||
luax_pushstring(L, device);
|
||||
Graphics::RendererInfo info;
|
||||
luax_catchexcept(L, [&](){ info = instance->getRendererInfo(); });
|
||||
|
||||
luax_pushstring(L, info.name);
|
||||
luax_pushstring(L, info.version);
|
||||
luax_pushstring(L, info.vendor);
|
||||
luax_pushstring(L, info.device);
|
||||
return 4;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user