From: José Fonseca Date: Mon, 31 Oct 2011 07:40:59 +0000 (+0000) Subject: Add vertex array case. X-Git-Url: https://git.cworth.org/git?p=apitrace-tests;a=commitdiff_plain;h=cbcb20d793b9710b48b1446f256f990eba47ef52 Add vertex array case. --- diff --git a/apps/gl/.gitignore b/apps/gl/.gitignore index 0a824f1..d396b2a 100644 --- a/apps/gl/.gitignore +++ b/apps/gl/.gitignore @@ -1,2 +1,3 @@ gremedy tri +varray diff --git a/apps/gl/CMakeLists.txt b/apps/gl/CMakeLists.txt index 3d60f1e..ac7ec55 100644 --- a/apps/gl/CMakeLists.txt +++ b/apps/gl/CMakeLists.txt @@ -16,6 +16,7 @@ set (subdir gl) set (targets tri gremedy + varray ) foreach (target ${targets}) diff --git a/apps/gl/varray.c b/apps/gl/varray.c new file mode 100644 index 0000000..8ec8914 --- /dev/null +++ b/apps/gl/varray.c @@ -0,0 +1,162 @@ +/* + * Copyright (c) 1993-1997, Silicon Graphics, Inc. + * ALL RIGHTS RESERVED + * Permission to use, copy, modify, and distribute this software for + * any purpose and without fee is hereby granted, provided that the above + * copyright notice appear in all copies and that both the copyright notice + * and this permission notice appear in supporting documentation, and that + * the name of Silicon Graphics, Inc. not be used in advertising + * or publicity pertaining to distribution of the software without specific, + * written prior permission. + * + * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" + * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR + * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON + * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, + * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY + * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, + * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF + * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN + * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. + * + * US Government Users Restricted Rights + * Use, duplication, or disclosure by the Government is subject to + * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph + * (c)(1)(ii) of the Rights in Technical Data and Computer Software + * clause at DFARS 252.227-7013 and/or in similar or successor + * clauses in the FAR or the DOD or NASA FAR Supplement. + * Unpublished-- rights reserved under the copyright laws of the + * United States. Contractor/manufacturer is Silicon Graphics, + * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. + * + * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. + */ + +/* + * varray.c + * This program demonstrates vertex arrays. + */ + +#ifdef _WIN32 +#include +#endif + +#include +#include +#include + +#ifdef __APPLE__ +# include +#else +# include +#endif + + +#define POINTER 1 +#define INTERLEAVED 2 + +#define DRAWARRAY 1 +#define ARRAYELEMENT 2 +#define DRAWELEMENTS 3 + +static int setupMethod = POINTER; +static int derefMethod = DRAWARRAY; + +static int win; + +static void setupPointers(void) +{ + static GLint vertices[] = { + 25, 25, + 100, 325, + 175, 25, + 175, 325, + 250, 25, + 325, 325 + }; + static GLfloat colors[] = { + 1.0 , 0.2 , 0.2 , + 0.2 , 0.2 , 1.0 , + 0.8 , 1.0 , 0.2 , + 0.75, 0.75, 0.75, + 0.35, 0.35, 0.35, + 0.5 , 0.5 , 0.5 + }; + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_COLOR_ARRAY); + + glVertexPointer(2, GL_INT, 0, vertices); + glColorPointer(3, GL_FLOAT, 0, colors); +} + +static void setupInterleave(void) +{ + static GLfloat intertwined[] = { + 1.0, 0.2, 1.0, 100.0, 100.0, 0.0, + 1.0, 0.2, 0.2, 0.0, 200.0, 0.0, + 1.0, 1.0, 0.2, 100.0, 300.0, 0.0, + 0.2, 1.0, 0.2, 200.0, 300.0, 0.0, + 0.2, 1.0, 1.0, 300.0, 200.0, 0.0, + 0.2, 0.2, 1.0, 200.0, 100.0, 0.0 + }; + + glInterleavedArrays(GL_C3F_V3F, 0, intertwined); +} + +static void init(void) +{ + glClearColor(0.0, 0.0, 0.0, 0.0); + glShadeModel(GL_SMOOTH); + setupPointers(); +} + +static void display(void) +{ + glClear(GL_COLOR_BUFFER_BIT); + + if (derefMethod == DRAWARRAY) + glDrawArrays(GL_TRIANGLES, 0, 6); + else if (derefMethod == ARRAYELEMENT) { + glBegin(GL_TRIANGLES); + glArrayElement(2); + glArrayElement(3); + glArrayElement(5); + glEnd(); + } + else if (derefMethod == DRAWELEMENTS) { + GLuint indices[4] = {0, 1, 3, 4}; + + glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_INT, indices); + } + glFlush(); + + glutDestroyWindow(win); + + exit(0); +} + +static void reshape(int w, int h) +{ + glViewport(0, 0, (GLsizei) w, (GLsizei) h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h); +} + +int main(int argc, char** argv) +{ + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); + glutInitWindowSize(350, 350); + glutInitWindowPosition(100, 100); + win = glutCreateWindow(argv[0]); + init(); + glutDisplayFunc(display); + glutReshapeFunc(reshape); + glutMainLoop(); + return 0; +} diff --git a/apps/gl/varray.ref.txt b/apps/gl/varray.ref.txt new file mode 100644 index 0000000..7c28118 --- /dev/null +++ b/apps/gl/varray.ref.txt @@ -0,0 +1,13 @@ +glClearColor(red = 0, green = 0, blue = 0, alpha = 0) +glShadeModel(mode = GL_SMOOTH) +glEnableClientState(array = GL_VERTEX_ARRAY) +glEnableClientState(array = GL_COLOR_ARRAY) +glViewport(x = 0, y = 0, width = 350, height = 350) +glMatrixMode(mode = GL_PROJECTION) +glLoadIdentity() +glOrtho(left = 0, right = 350, bottom = 0, top = 350, zNear = -1, zFar = 1) +glClear(mask = GL_COLOR_BUFFER_BIT) +glColorPointer(size = 3, type = GL_FLOAT, stride = 0, pointer = blob(72)) +glVertexPointer(size = 2, type = GL_INT, stride = 0, pointer = blob(48)) +glDrawArrays(mode = GL_TRIANGLES, first = 0, count = 6) +glFlush()