1 Star 0 Fork 0

pengrui/opengl-animation

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
OpenglUtil.h 2.13 KB
一键复制 编辑 原始数据 按行查看 历史
pengrui 提交于 2024-05-16 09:43 . 1
#ifndef __OPENGL_UTIL_H_
#define __OPENGL_UTIL_H_
//https://gitee.com/lamora/SFML/blob/master/src/SFML/Graphics/GLCheck.hpp
//https://gitee.com/pengrui1993/hello-openal001/blob/master/myal.cpp
#include<string>
#include<filesystem>
struct OpenglUtil{
// using Path = std::filesystem::path;
using Path = std::string;
using Line = std::uint_fast32_t;
OpenglUtil() = delete;
~OpenglUtil() = delete;
template <typename GlFunction, typename... Params>
static auto glCall(Path file,Line line,GlFunction function,Params...params)
-> typename std::enable_if<std::is_same<void, decltype(function(params...))>::value, decltype(function(params...))>::type{
function(std::forward<Params>(params)...);
checkError(file,line);
}
template <typename GlFunction, typename... Params>
static auto glCall(Path file,Line line,GlFunction function,Params...params)
->typename std::enable_if<!std::is_same<void, decltype(function(params...))>::value
, decltype(function(params...))>::type{
auto ret = function(std::forward<Params>(params)...);
checkError(file,line);
return ret;
}
template <typename GlFunction>
static auto glCall0(Path file,Line line,GlFunction function)
-> typename std::enable_if<std::is_same<void
, decltype(function())>::value
, decltype(function())>::type{
function();
checkError(file,line);
}
static void clearError();
template <typename GlFunction>
static auto glCall0(Path file,Line line,GlFunction function)
-> typename std::enable_if<!std::is_same<void
, decltype(function())>::value
, decltype(function())>::type{
auto ret = function();
checkError(file,line);
return ret;
}
static const int TRUE{1};
static const int FALSE{0};
static const int exitOnError{TRUE};
static void checkError(const Path& file,Line line);
};
#define DEBUG 1
#ifdef DEBUG
#endif
#if (DEBUG)
#define glCall(function,...) OpenglUtil::glCall(__FILE__,__LINE__,function,__VA_ARGS__)
#define glCall0(function) OpenglUtil::glCall0(__FILE__,__LINE__,function)
#else
#define glCall(function,...) function(__VA_ARGS__)
#define glCall0(function) function()
#endif
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/pengrui1993/opengl-animation.git
git@gitee.com:pengrui1993/opengl-animation.git
pengrui1993
opengl-animation
opengl-animation
master

搜索帮助