7#ifndef PXR_IMAGING_GLF_BINDING_MAP_H
8#define PXR_IMAGING_GLF_BINDING_MAP_H
13#include "pxr/imaging/glf/api.h"
14#include "pxr/imaging/garch/glApi.h"
20#include "pxr/base/tf/hashmap.h"
22PXR_NAMESPACE_OPEN_SCOPE
27 typedef TfHashMap<TfToken, int, TfToken::HashFunctor> BindingMap;
30 : _samplerBindingBaseIndex(0)
31 , _uniformBindingBaseIndex(0)
35 int GetSamplerUnit(std::string
const &name);
37 int GetSamplerUnit(
TfToken const & name);
42 int GetAttributeIndex(std::string
const & name);
44 int GetAttributeIndex(
TfToken const & name);
47 int GetUniformBinding(std::string
const & name);
49 int GetUniformBinding(
TfToken const & name);
52 bool HasUniformBinding(std::string
const & name)
const;
54 bool HasUniformBinding(
TfToken const & name)
const;
56 int GetNumSamplerBindings()
const {
57 return (
int)_samplerBindings.size();
60 void ClearAttribBindings() {
61 _attribBindings.clear();
74 void ResetSamplerBindings(
int baseIndex) {
75 _samplerBindings.clear();
76 _samplerBindingBaseIndex = baseIndex;
79 void ResetUniformBindings(
int baseIndex) {
80 _uniformBindings.clear();
81 _uniformBindingBaseIndex = baseIndex;
86 void AddAttribBinding(
TfToken const &name,
int location) {
87 _attribBindings[name] = location;
90 BindingMap
const &GetAttributeBindings()
const {
91 return _attribBindings;
95 void AssignSamplerUnitsToProgram(GLuint program);
98 void AssignUniformBindingsToProgram(GLuint program);
101 void AddCustomBindings(GLuint program);
107 void _AddActiveAttributeBindings(GLuint program);
108 void _AddActiveUniformBindings(GLuint program);
109 void _AddActiveUniformBlockBindings(GLuint program);
111 BindingMap _attribBindings;
112 BindingMap _samplerBindings;
113 BindingMap _uniformBindings;
115 int _samplerBindingBaseIndex;
116 int _uniformBindingBaseIndex;
120PXR_NAMESPACE_CLOSE_SCOPE
Enable a concrete base class for use with TfRefPtr.
Token for efficient comparison, assignment, and hashing of known strings.
Enable a concrete base class for use with TfWeakPtr.
Definitions of basic string utilities in tf.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...