MCPcopy Create free account
hub / github.com/cginternals/globjects / draw

Function draw

source/examples/transformfeedback/main.cpp:134–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

132}
133
134void draw()
135{
136 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
137
138 const auto side = std::min<int>(g_size.x, g_size.y);
139 glViewport((g_size.x - side) / 2, (g_size.y - side) / 2, side, side);
140
141 const auto t_elapsed = std::chrono::high_resolution_clock::now() - g_startTime;
142 g_startTime = std::chrono::high_resolution_clock::now();
143
144 auto drawBuffer = g_vertexBuffer1;
145 auto writeBuffer = g_vertexBuffer2;
146
147 g_vao->bind();
148
149 g_transformFeedbackProgram->setUniform("deltaT", static_cast<float>(t_elapsed.count()) * float(std::nano::num) / float(std::nano::den));
150
151 g_vao->binding(0)->setBuffer(drawBuffer, 0, sizeof(glm::vec4));
152
153 g_transformFeedback->bind();
154 writeBuffer->bindBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0);
155
156 glEnable(GL_RASTERIZER_DISCARD);
157
158 g_transformFeedbackProgram->use();
159 g_transformFeedback->begin(GL_TRIANGLES);
160 g_vao->drawArrays(GL_TRIANGLES, 0, 6);
161 g_transformFeedback->end();
162 glDisable(GL_RASTERIZER_DISCARD);
163
164 g_transformFeedback->unbind();
165
166 g_vao->binding(0)->setBuffer(writeBuffer, 0, sizeof(glm::vec4));
167
168 g_shaderProgram->use();
169 g_transformFeedback->draw(GL_TRIANGLE_STRIP);
170 g_shaderProgram->release();
171
172 g_vao->unbind();
173
174 std::swap(g_vertexBuffer1, g_vertexBuffer2);
175}
176
177
178void error(int errnum, const char * errmsg)

Callers 1

mainFunction · 0.70

Calls 12

setBufferMethod · 0.80
bindingMethod · 0.80
bindBaseMethod · 0.80
drawArraysMethod · 0.80
bindMethod · 0.45
countMethod · 0.45
useMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
unbindMethod · 0.45
drawMethod · 0.45
releaseMethod · 0.45

Tested by

no test coverage detected