| 154 | |
| 155 | |
| 156 | surface_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 |
nothing calls this directly
no test coverage detected