diff options
author | alokp@chromium.org <alokp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-13 17:20:44 +0000 |
---|---|---|
committer | alokp@chromium.org <alokp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-13 17:20:44 +0000 |
commit | bd0dae9836979fb4d33574e34ecde51b911e87c6 (patch) | |
tree | 24a6d98dd5e1b98265224d64650057ed9491282d /gpu/demos | |
parent | 8e65f11ba2e6ba7ebbc81e23aef288969b0f5ebd (diff) | |
download | chromium_src-bd0dae9836979fb4d33574e34ecde51b911e87c6.zip chromium_src-bd0dae9836979fb4d33574e34ecde51b911e87c6.tar.gz chromium_src-bd0dae9836979fb4d33574e34ecde51b911e87c6.tar.bz2 |
Added simple vertex shader demo. I had to make the following modifications to third-party code:
- Changed client-side vertex array to VBO
- Used GL_UNSIGNED_SHORT instead of GL_UNSIGNED_INT in glDrawElements because GL_UNSIGNED_INT is not supported for by OpenGL ES 2.0 for indices
BUG=26099
TEST=Run simple_vertex_shader executable, you should see a rotating cube.
Review URL: http://codereview.chromium.org/543015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36127 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/demos')
-rw-r--r-- | gpu/demos/demos.gyp | 11 | ||||
-rw-r--r-- | gpu/demos/simple_vertex_shader/main.cc | 67 |
2 files changed, 78 insertions, 0 deletions
diff --git a/gpu/demos/demos.gyp b/gpu/demos/demos.gyp index e40d5b5..43ecb50 100644 --- a/gpu/demos/demos.gyp +++ b/gpu/demos/demos.gyp @@ -34,6 +34,17 @@ 'hello_triangle/main.cc', ], }, + { + 'target_name': 'simple_vertex_shader', + 'type': 'executable', + 'dependencies': [ + 'app_framework', + '../../third_party/gles2_book/gles2_book.gyp:simple_vertex_shader', + ], + 'sources': [ + 'simple_vertex_shader/main.cc', + ], + }, ] } diff --git a/gpu/demos/simple_vertex_shader/main.cc b/gpu/demos/simple_vertex_shader/main.cc new file mode 100644 index 0000000..d042942 --- /dev/null +++ b/gpu/demos/simple_vertex_shader/main.cc @@ -0,0 +1,67 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This is a simple example that draws a single triangle with +// a minimal vertex/fragment shader. The purpose of this +// example is to demonstrate the basic concepts of +// OpenGL ES 2.0 rendering. + +#include "gpu/demos/app_framework/application.h" +#include "third_party/gles2_book/Chapter_8/Simple_VertexShader/Simple_VertexShader.h" + +namespace gpu_demos { +class SimpleVertexShader : public Application { + public: + SimpleVertexShader(); + ~SimpleVertexShader(); + + bool Init(); + + protected: + virtual void Draw(); + + private: + ESContext context_; + SVSUserData user_data_; + + DISALLOW_COPY_AND_ASSIGN(SimpleVertexShader); +}; + +SimpleVertexShader::SimpleVertexShader() { + esInitContext(&context_); + + memset(&user_data_, 0, sizeof(SVSUserData)); + context_.userData = &user_data_; +} + +SimpleVertexShader::~SimpleVertexShader() { + svsShutDown(&context_); +} + +bool SimpleVertexShader::Init() { + if (!Application::InitRenderContext()) return false; + + context_.width = width(); + context_.height = height(); + if (!svsInit(&context_)) return false; + svsUpdate(&context_, 0.0f); + + return true; +} + +void SimpleVertexShader::Draw() { + svsDraw(&context_); +} +} // namespace gpu_demos + +int main(int argc, char *argv[]) { + gpu_demos::SimpleVertexShader app; + if (!app.Init()) { + printf("Could not init.\n"); + return EXIT_FAILURE; + } + + app.MainLoop(); + return EXIT_SUCCESS; +} |