a847289850
There is an internal version of cogl_draw_vertex_attributes_array which previously just bypassed the framebuffer flushing, journal flushing and pipeline validation so that it could be used to draw the journal. This patch generalises the function so that it takes a set of flags to specify which parts to flush. The public version of the function now just calls the internal version with the flags set to 0. The '_real' version of the function has now been merged into the internal version of the function because it was only called in one place. This simplifies the code somewhat. The common code which flushed the various state has been moved to a separate function. The indexed versions of the functions have had a similar treatment. http://bugzilla.clutter-project.org/show_bug.cgi?id=2481
93 lines
2.7 KiB
C
93 lines
2.7 KiB
C
/*
|
|
* Cogl
|
|
*
|
|
* An object oriented GL/GLES Abstraction/Utility Layer
|
|
*
|
|
* Copyright (C) 2010 Intel Corporation.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*
|
|
*
|
|
*
|
|
* Authors:
|
|
* Robert Bragg <robert@linux.intel.com>
|
|
*/
|
|
|
|
#ifndef __COGL_VERTEX_ATTRIBUTE_PRIVATE_H
|
|
#define __COGL_VERTEX_ATTRIBUTE_PRIVATE_H
|
|
|
|
#include "cogl-object-private.h"
|
|
#include "cogl-vertex-attribute.h"
|
|
|
|
typedef enum
|
|
{
|
|
COGL_VERTEX_ATTRIBUTE_NAME_ID_POSITION_ARRAY,
|
|
COGL_VERTEX_ATTRIBUTE_NAME_ID_COLOR_ARRAY,
|
|
COGL_VERTEX_ATTRIBUTE_NAME_ID_TEXTURE_COORD_ARRAY,
|
|
COGL_VERTEX_ATTRIBUTE_NAME_ID_NORMAL_ARRAY,
|
|
COGL_VERTEX_ATTRIBUTE_NAME_ID_CUSTOM_ARRAY
|
|
} CoglVertexAttributeNameID;
|
|
|
|
struct _CoglVertexAttribute
|
|
{
|
|
CoglObject _parent;
|
|
|
|
CoglVertexArray *array;
|
|
char *name;
|
|
CoglVertexAttributeNameID name_id;
|
|
gsize stride;
|
|
gsize offset;
|
|
int n_components;
|
|
CoglVertexAttributeType type;
|
|
gboolean normalized;
|
|
unsigned int texture_unit;
|
|
|
|
int immutable_ref;
|
|
};
|
|
|
|
typedef enum
|
|
{
|
|
COGL_DRAW_SKIP_JOURNAL_FLUSH = 1 << 0,
|
|
COGL_DRAW_SKIP_PIPELINE_VALIDATION = 1 << 1,
|
|
COGL_DRAW_SKIP_FRAMEBUFFER_FLUSH = 1 << 2
|
|
} CoglDrawFlags;
|
|
|
|
CoglVertexAttribute *
|
|
_cogl_vertex_attribute_immutable_ref (CoglVertexAttribute *vertex_attribute);
|
|
|
|
void
|
|
_cogl_vertex_attribute_immutable_unref (CoglVertexAttribute *vertex_attribute);
|
|
|
|
void
|
|
_cogl_draw_vertex_attributes_array (CoglVerticesMode mode,
|
|
int first_vertex,
|
|
int n_vertices,
|
|
CoglVertexAttribute **attributes,
|
|
CoglDrawFlags flags);
|
|
|
|
void
|
|
_cogl_draw_indexed_vertex_attributes_array (CoglVerticesMode mode,
|
|
int first_vertex,
|
|
int n_vertices,
|
|
CoglIndices *indices,
|
|
CoglVertexAttribute **attributes,
|
|
CoglDrawFlags flags);
|
|
|
|
void
|
|
_cogl_vertex_attribute_disable_cached_arrays (void);
|
|
|
|
#endif /* __COGL_VERTEX_ATTRIBUTE_PRIVATE_H */
|
|
|