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

Method vector_field_impl

src/backend/opengl/vector_field_impl.cpp:90–150  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

88}
89
90vector_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 }

Callers

nothing calls this directly

Calls 3

dtype2glFunction · 0.85
getAttributeLocationMethod · 0.80
getUniformLocationMethod · 0.80

Tested by

no test coverage detected