Sunshine master
Self-hosted game stream host for Moonlight.
gl::program_t Class Reference

OpenGL shader program with attached shader stages. More...

#include <src/platform/linux/graphics.h>

Public Member Functions

void bind (const buffer_t &buffer)
 Bind this program and attach a uniform buffer block.
 
std::string err_str ()
 Read the program linker log.
 
GLuint handle () const
 Return the native handle owned by the wrapper.
 
std::optional< buffer_tuniform (const char *block, std::pair< const char *, std::string_view > *members, std::size_t count)
 Query a uniform location from an OpenGL program.
 

Static Public Member Functions

static util::Either< program_t, std::string > link (const shader_t &vert, const shader_t &frag)
 Link an OpenGL program from compiled shaders.
 

Detailed Description

OpenGL shader program with attached shader stages.

Member Function Documentation

◆ bind()

void gl::program_t::bind ( const buffer_t & buffer)

Bind this program and attach a uniform buffer block.

Parameters
bufferUniform buffer block used by the program.

◆ err_str()

std::string gl::program_t::err_str ( )

Read the program linker log.

Returns
OpenGL program link error log.

◆ handle()

GLuint gl::program_t::handle ( ) const

Return the native handle owned by the wrapper.

Returns
OpenGL program object name.

◆ link()

util::Either< program_t, std::string > gl::program_t::link ( const shader_t & vert,
const shader_t & frag )
static

Link an OpenGL program from compiled shaders.

Parameters
vertCompiled vertex shader object.
fragCompiled fragment shader object.
Returns
Linked program object, or linker log on failure.

◆ uniform()

std::optional< buffer_t > gl::program_t::uniform ( const char * block,
std::pair< const char *, std::string_view > * members,
std::size_t count )

Query a uniform location from an OpenGL program.

Parameters
blockUniform block name to bind.
membersUniform members to query within the block.
countNumber of uniform members to resolve.
Returns
Uniform buffer wrapper, or std::nullopt when lookup/allocation fails.

The documentation for this class was generated from the following files: