Index: client/deps/glbench/src/trianglesetuptest.cc |
diff --git a/client/deps/glbench/src/trianglesetuptest.cc b/client/deps/glbench/src/trianglesetuptest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6610eed68de107aa030fc200ae30b52c8fc128c7 |
--- /dev/null |
+++ b/client/deps/glbench/src/trianglesetuptest.cc |
@@ -0,0 +1,85 @@ |
+// Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <stdlib.h> |
+ |
+#include "main.h" |
+#include "testbase.h" |
+#include "utils.h" |
+ |
+ |
+namespace glbench { |
+ |
+ |
+class TriangleSetupTest : public DrawElementsTestFunc { |
+ public: |
+ TriangleSetupTest() {} |
+ virtual ~TriangleSetupTest() {} |
+ virtual bool Run(); |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(TriangleSetupTest); |
+}; |
+ |
+ |
+bool TriangleSetupTest::Run() { |
+ glViewport(-g_width, -g_height, g_width*2, g_height*2); |
+ |
+ // Larger meshes make this test too slow for devices that do 1 mtri/sec. |
+ GLint width = 64; |
+ GLint height = 64; |
+ |
+ GLfloat *vertices = NULL; |
+ GLsizeiptr vertex_buffer_size = 0; |
+ CreateLattice(&vertices, &vertex_buffer_size, 1.f / g_width, 1.f / g_height, |
+ width, height); |
+ GLuint vertex_buffer = SetupVBO(GL_ARRAY_BUFFER, |
+ vertex_buffer_size, vertices); |
+ glVertexPointer(2, GL_FLOAT, 0, 0); |
+ glEnableClientState(GL_VERTEX_ARRAY); |
+ |
+ GLuint *indices = NULL; |
+ GLuint index_buffer = 0; |
+ GLsizeiptr index_buffer_size = 0; |
+ |
+ { |
+ count_ = CreateMesh(&indices, &index_buffer_size, width, height, 0); |
+ |
+ index_buffer = SetupVBO(GL_ELEMENT_ARRAY_BUFFER, |
+ index_buffer_size, indices); |
+ RunTest(this, "mtri_sec_triangle_setup", count_ / 3, true); |
+ glEnable(GL_CULL_FACE); |
+ RunTest(this, "mtri_sec_triangle_setup_all_culled", count_ / 3, true); |
+ glDisable(GL_CULL_FACE); |
+ |
+ glDeleteBuffers(1, &index_buffer); |
+ delete[] indices; |
+ } |
+ |
+ { |
+ glColor4f(0.f, 1.f, 1.f, 1.f); |
+ count_ = CreateMesh(&indices, &index_buffer_size, width, height, |
+ RAND_MAX / 2); |
+ |
+ index_buffer = SetupVBO(GL_ELEMENT_ARRAY_BUFFER, |
+ index_buffer_size, indices); |
+ glEnable(GL_CULL_FACE); |
+ RunTest(this, "mtri_sec_triangle_setup_half_culled", count_ / 3, true); |
+ |
+ glDeleteBuffers(1, &index_buffer); |
+ delete[] indices; |
+ } |
+ |
+ glDeleteBuffers(1, &vertex_buffer); |
+ delete[] vertices; |
+ return true; |
+} |
+ |
+ |
+TestBase* GetTriangleSetupTest() { |
+ return new TriangleSetupTest; |
+} |
+ |
+ |
+} // namespace glbench |