| 88 | } |
| 89 | |
| 90 | vector_field_impl::vector_field_impl(const uint pNumPoints, const forge::dtype pDataType, const int pD) |
| 91 | : mDimension(pD), mNumPoints(pNumPoints), mDataType(pDataType), |
| 92 | mGLType(dtype2gl(mDataType)), |
| 93 | mFieldProgram(pD==2 ? glsl::vector_field2d_vs.c_str() : glsl::vector_field_vs.c_str(), |
| 94 | glsl::histogram_fs.c_str(), |
| 95 | pD==2 ? glsl::vector_field2d_gs.c_str() : glsl::vector_field_gs.c_str()), |
| 96 | mDBO(-1), mDBOSize(0), mFieldPointIndex(-1), |
| 97 | mFieldColorIndex(-1), mFieldAlphaIndex(-1), mFieldDirectionIndex(-1), |
| 98 | mFieldPVMatIndex(-1), mFieldModelMatIndex(-1), mFieldAScaleMatIndex(-1), |
| 99 | mFieldPVCOnIndex(-1), mFieldPVAOnIndex(-1), mFieldUColorIndex(-1) |
| 100 | { |
| 101 | CheckGL("Begin vector_field_impl::vector_field_impl"); |
| 102 | |
| 103 | setColor(0, 1, 0, 1); |
| 104 | |
| 105 | if (mDimension==2) { |
| 106 | mVBOSize = 2*mNumPoints; |
| 107 | mDBOSize = 2*mNumPoints; |
| 108 | } else { |
| 109 | mVBOSize = 3*mNumPoints; |
| 110 | mDBOSize = 3*mNumPoints; |
| 111 | } |
| 112 | |
| 113 | mCBOSize = 3*mNumPoints; |
| 114 | mABOSize = mNumPoints; |
| 115 | |
| 116 | mFieldPointIndex = mFieldProgram.getAttributeLocation("point"); |
| 117 | mFieldColorIndex = mFieldProgram.getAttributeLocation("color"); |
| 118 | mFieldAlphaIndex = mFieldProgram.getAttributeLocation("alpha"); |
| 119 | mFieldDirectionIndex = mFieldProgram.getAttributeLocation("direction"); |
| 120 | |
| 121 | mFieldPVMatIndex = mFieldProgram.getUniformLocation("viewMat"); |
| 122 | mFieldModelMatIndex = mFieldProgram.getUniformLocation("modelMat"); |
| 123 | mFieldAScaleMatIndex = mFieldProgram.getUniformLocation("arrowScaleMat"); |
| 124 | |
| 125 | mFieldPVCOnIndex = mFieldProgram.getUniformLocation("isPVCOn"); |
| 126 | mFieldPVAOnIndex = mFieldProgram.getUniformLocation("isPVAOn"); |
| 127 | mFieldUColorIndex = mFieldProgram.getUniformLocation("barColor"); |
| 128 | |
| 129 | #define PLOT_CREATE_BUFFERS(type) \ |
| 130 | mVBO = createBuffer<type>(GL_ARRAY_BUFFER, mVBOSize, NULL, GL_DYNAMIC_DRAW); \ |
| 131 | mCBO = createBuffer<float>(GL_ARRAY_BUFFER, mCBOSize, NULL, GL_DYNAMIC_DRAW); \ |
| 132 | mABO = createBuffer<float>(GL_ARRAY_BUFFER, mABOSize, NULL, GL_DYNAMIC_DRAW); \ |
| 133 | mDBO = createBuffer<float>(GL_ARRAY_BUFFER, mDBOSize, NULL, GL_DYNAMIC_DRAW); \ |
| 134 | mVBOSize *= sizeof(type); \ |
| 135 | mCBOSize *= sizeof(float); \ |
| 136 | mABOSize *= sizeof(float); \ |
| 137 | mDBOSize *= sizeof(float); |
| 138 | |
| 139 | switch(mGLType) { |
| 140 | case GL_FLOAT : PLOT_CREATE_BUFFERS(float) ; break; |
| 141 | case GL_INT : PLOT_CREATE_BUFFERS(int) ; break; |
| 142 | case GL_UNSIGNED_INT : PLOT_CREATE_BUFFERS(uint) ; break; |
| 143 | case GL_SHORT : PLOT_CREATE_BUFFERS(short) ; break; |
| 144 | case GL_UNSIGNED_SHORT : PLOT_CREATE_BUFFERS(ushort); break; |
| 145 | case GL_UNSIGNED_BYTE : PLOT_CREATE_BUFFERS(float) ; break; |
| 146 | default : TYPE_ERROR(1, mDataType); |
| 147 | } |
nothing calls this directly
no test coverage detected