MCPcopy Create free account
hub / github.com/arrayfire/forge / histogram_impl

Method histogram_impl

src/backend/opengl/histogram_impl.cpp:73–119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71}
72
73histogram_impl::histogram_impl(const uint pNBins, const forge::dtype pDataType)
74 : mDataType(pDataType), mGLType(dtype2gl(mDataType)), mNBins(pNBins),
75 mProgram(glsl::histogram_vs.c_str(), glsl::histogram_fs.c_str()),
76 mYMaxIndex(-1), mNBinsIndex(-1), mMatIndex(-1), mPointIndex(-1),
77 mFreqIndex(-1), mColorIndex(-1), mAlphaIndex(-1), mPVCIndex(-1), mPVAIndex(-1),
78 mBColorIndex(-1)
79{
80 CheckGL("Begin histogram_impl::histogram_impl");
81
82 setColor(0.8f, 0.6f, 0.0f, 1.0f);
83
84 mYMaxIndex = mProgram.getUniformLocation("ymax" );
85 mNBinsIndex = mProgram.getUniformLocation("nbins" );
86 mMatIndex = mProgram.getUniformLocation("transform");
87 mPVCIndex = mProgram.getUniformLocation("isPVCOn" );
88 mPVAIndex = mProgram.getUniformLocation("isPVAOn" );
89 mBColorIndex = mProgram.getUniformLocation("barColor" );
90 mPointIndex = mProgram.getAttributeLocation("point");
91 mFreqIndex = mProgram.getAttributeLocation("freq" );
92 mColorIndex = mProgram.getAttributeLocation("color");
93 mAlphaIndex = mProgram.getAttributeLocation("alpha");
94
95 mVBOSize = mNBins;
96 mCBOSize = 3*mVBOSize;
97 mABOSize = mNBins;
98
99#define HIST_CREATE_BUFFERS(type) \
100 mVBO = createBuffer<type>(GL_ARRAY_BUFFER, mVBOSize, NULL, GL_DYNAMIC_DRAW); \
101 mCBO = createBuffer<float>(GL_ARRAY_BUFFER, mCBOSize, NULL, GL_DYNAMIC_DRAW); \
102 mABO = createBuffer<float>(GL_ARRAY_BUFFER, mABOSize, NULL, GL_DYNAMIC_DRAW); \
103 mVBOSize *= sizeof(type); \
104 mCBOSize *= sizeof(float); \
105 mABOSize *= sizeof(float);
106
107 switch(mGLType) {
108 case GL_FLOAT : HIST_CREATE_BUFFERS(float) ; break;
109 case GL_INT : HIST_CREATE_BUFFERS(int) ; break;
110 case GL_UNSIGNED_INT : HIST_CREATE_BUFFERS(uint) ; break;
111 case GL_SHORT : HIST_CREATE_BUFFERS(short) ; break;
112 case GL_UNSIGNED_SHORT : HIST_CREATE_BUFFERS(ushort); break;
113 case GL_UNSIGNED_BYTE : HIST_CREATE_BUFFERS(float) ; break;
114 default: TYPE_ERROR(1, mDataType);
115 }
116#undef HIST_CREATE_BUFFERS
117
118 CheckGL("End histogram_impl::histogram_impl");
119}
120
121histogram_impl::~histogram_impl()
122{

Callers

nothing calls this directly

Calls 3

dtype2glFunction · 0.85
getUniformLocationMethod · 0.80
getAttributeLocationMethod · 0.80

Tested by

no test coverage detected