MCPcopy Create free account
hub / github.com/android/ndk-samples / Render

Method Render

teapots/classic-teapot/src/main/cpp/TeapotRenderer.cpp:141–191  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141void TeapotRenderer::Render() {
142 //
143 // Feed Projection and Model View matrices to the shaders
144 ndk_helper::Mat4 mat_vp = mat_projection_ * mat_view_;
145
146 // Bind the VBO
147 glBindBuffer(GL_ARRAY_BUFFER, vbo_);
148
149 int32_t iStride = sizeof(TEAPOT_VERTEX);
150 // Pass the vertex data
151 glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, GL_FALSE, iStride, nullptr);
152 glEnableVertexAttribArray(ATTRIB_VERTEX);
153
154 glVertexAttribPointer(ATTRIB_NORMAL, 3, GL_FLOAT, GL_FALSE, iStride,
155 reinterpret_cast<void*>(3 * sizeof(GLfloat)));
156 glEnableVertexAttribArray(ATTRIB_NORMAL);
157
158 // Bind the IB
159 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_);
160
161 glUseProgram(shader_param_.program_);
162
163 TEAPOT_MATERIALS material = {
164 {1.0f, 0.5f, 0.5f},
165 {1.0f, 1.0f, 1.0f, 10.f},
166 {0.1f, 0.1f, 0.1f},
167 };
168
169 // Update uniforms
170 glUniform4f(shader_param_.material_diffuse_, material.diffuse_color[0],
171 material.diffuse_color[1], material.diffuse_color[2], 1.f);
172
173 glUniform4f(shader_param_.material_specular_, material.specular_color[0],
174 material.specular_color[1], material.specular_color[2],
175 material.specular_color[3]);
176 //
177 // using glUniform3fv here was troublesome
178 //
179 glUniform3f(shader_param_.material_ambient_, material.ambient_color[0],
180 material.ambient_color[1], material.ambient_color[2]);
181
182 glUniformMatrix4fv(shader_param_.matrix_projection_, 1, GL_FALSE,
183 mat_vp.Ptr());
184 glUniformMatrix4fv(shader_param_.matrix_view_, 1, GL_FALSE, mat_view_.Ptr());
185 glUniform3f(shader_param_.light0_, 100.f, -200.f, -600.f);
186
187 glDrawElements(GL_TRIANGLES, num_indices_, GL_UNSIGNED_SHORT, nullptr);
188
189 glBindBuffer(GL_ARRAY_BUFFER, 0);
190 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
191}
192
193bool TeapotRenderer::LoadShaders(SHADER_PARAMS* params, const char* strVsh,
194 const char* strFsh) {

Callers 1

DrawFrameMethod · 0.45

Calls 1

PtrMethod · 0.80

Tested by

no test coverage detected