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

Method Render

teapots/textured-teapot/src/main/cpp/TeapotRenderer.cpp:140–190  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

DrawFrameMethod · 0.45

Calls 1

PtrMethod · 0.80

Tested by

no test coverage detected