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

Method surface_impl

src/backend/opengl/surface_impl.cpp:156–221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

154
155
156surface_impl::surface_impl(unsigned pNumXPoints, unsigned pNumYPoints,
157 forge::dtype pDataType, forge::MarkerType pMarkerType)
158 : mNumXPoints(pNumXPoints),mNumYPoints(pNumYPoints), mDataType(dtype2gl(pDataType)),
159 mMarkerType(pMarkerType), mIBO(0), mIBOSize(0),
160 mMarkerProgram(glsl::plot3_vs.c_str(), glsl::marker_fs.c_str()),
161 mSurfProgram(glsl::plot3_vs.c_str(), glsl::plot3_fs.c_str()),
162 mMarkerMatIndex(-1), mMarkerPointIndex(-1), mMarkerColorIndex(-1), mMarkerAlphaIndex(-1),
163 mMarkerPVCIndex(-1), mMarkerPVAIndex(-1), mMarkerTypeIndex(-1), mMarkerColIndex(-1),
164 mSurfMatIndex(-1), mSurfRangeIndex(-1), mSurfPointIndex(-1), mSurfColorIndex(-1),
165 mSurfAlphaIndex(-1), mSurfPVCIndex(-1), mSurfPVAIndex(-1)
166{
167 CheckGL("Begin surface_impl::surface_impl");
168 setColor(0.9f, 0.5f, 0.6f, 1.0f);
169
170 mMarkerMatIndex = mMarkerProgram.getUniformLocation("transform");
171 mMarkerPVCIndex = mMarkerProgram.getUniformLocation("isPVCOn");
172 mMarkerPVAIndex = mMarkerProgram.getUniformLocation("isPVAOn");
173 mMarkerTypeIndex = mMarkerProgram.getUniformLocation("marker_type");
174 mMarkerColIndex = mMarkerProgram.getUniformLocation("marker_color");
175 mMarkerPointIndex= mMarkerProgram.getAttributeLocation("point");
176 mMarkerColorIndex= mMarkerProgram.getAttributeLocation("color");
177 mMarkerAlphaIndex= mMarkerProgram.getAttributeLocation("alpha");
178
179 mSurfMatIndex = mSurfProgram.getUniformLocation("transform");
180 mSurfRangeIndex = mSurfProgram.getUniformLocation("minmaxs");
181 mSurfPVCIndex = mSurfProgram.getUniformLocation("isPVCOn");
182 mSurfPVAIndex = mSurfProgram.getUniformLocation("isPVAOn");
183 mSurfPointIndex = mSurfProgram.getAttributeLocation ("point");
184 mSurfColorIndex = mSurfProgram.getAttributeLocation ("color");
185 mSurfAlphaIndex = mSurfProgram.getAttributeLocation ("alpha");
186
187 unsigned totalPoints = mNumXPoints * mNumYPoints;
188
189 mVBOSize = 3*totalPoints;
190 mCBOSize = 3*totalPoints;
191 mABOSize = totalPoints;
192#define SURF_CREATE_BUFFERS(type) \
193 mVBO = createBuffer<type>(GL_ARRAY_BUFFER, mVBOSize, NULL, GL_DYNAMIC_DRAW); \
194 mCBO = createBuffer<float>(GL_ARRAY_BUFFER, mCBOSize, NULL, GL_DYNAMIC_DRAW); \
195 mABO = createBuffer<float>(GL_ARRAY_BUFFER, mABOSize, NULL, GL_DYNAMIC_DRAW); \
196 mVBOSize *= sizeof(type); \
197 mCBOSize *= sizeof(float); \
198 mABOSize *= sizeof(float);
199
200 switch(mDataType) {
201 case GL_FLOAT : SURF_CREATE_BUFFERS(float) ; break;
202 case GL_INT : SURF_CREATE_BUFFERS(int) ; break;
203 case GL_UNSIGNED_INT : SURF_CREATE_BUFFERS(uint) ; break;
204 case GL_SHORT : SURF_CREATE_BUFFERS(short) ; break;
205 case GL_UNSIGNED_SHORT : SURF_CREATE_BUFFERS(ushort); break;
206 case GL_UNSIGNED_BYTE : SURF_CREATE_BUFFERS(float) ; break;
207 default : TYPE_ERROR(1, pDataType);
208 }
209
210#undef SURF_CREATE_BUFFERS
211
212 std::vector<unsigned int> indices;
213

Callers

nothing calls this directly

Calls 5

dtype2glFunction · 0.85
generateGridIndicesFunction · 0.85
getUniformLocationMethod · 0.80
getAttributeLocationMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected