Program Listing for File OpenGLUtils.hpp

Return to documentation for file (include/Ramus/Graphics/RHI/OpenGL/OpenGLUtils.hpp)

#pragma once

#include <glad/gl.h>

#include "Ramus/Graphics/GraphicsDefines.hpp"
//#include "Ramus/Graphics/RHI/Buffer.hpp"
//#include "Ramus/Graphics/RHI/GraphicsResource.hpp"

namespace ramus::gl
{
    inline GLint toBitfield(int32_t value) { return static_cast<GLbitfield>(value); }
    inline GLint toInt(int32_t value) { return static_cast<GLint>(value); }
    inline GLint toPtr(int32_t value) { return static_cast<GLintptr>(value); }
    inline GLint toSize(int32_t value) { return static_cast<GLsizei>(value); }
    inline GLint toUint(int32_t value) { return static_cast<GLuint>(value); }

    //template <typename T>
    //inline GLuint getHandle(const Buffer& buffer) { return toUint(buffer.GetHandle()); }

    //template <typename T>
    //inline GLuint getHandle(const GraphicsResource<T>& resource) { return toUint(resource.GetHandle()); }

    static GLenum ShaderDataTypeToOpenGL(ramus::ShaderDataType type)
    {
        switch (type)
        {
            case ramus::ShaderDataType::Float:    return GL_FLOAT;
            case ramus::ShaderDataType::Float2:   return GL_FLOAT;
            case ramus::ShaderDataType::Float3:   return GL_FLOAT;
            case ramus::ShaderDataType::Float4:   return GL_FLOAT;
            case ramus::ShaderDataType::Mat3:     return GL_FLOAT;
            case ramus::ShaderDataType::Mat4:     return GL_FLOAT;
            case ramus::ShaderDataType::Int:      return GL_INT;
            case ramus::ShaderDataType::Int2:     return GL_INT;
            case ramus::ShaderDataType::Int3:     return GL_INT;
            case ramus::ShaderDataType::Int4:     return GL_INT;
            case ramus::ShaderDataType::Bool:     return GL_BOOL;
            default: break;
        }

        return 0;
    }
}