Order files
This commit is contained in:
@ -0,0 +1,421 @@
|
||||
/*
|
||||
* Copyright (C) 2011-2012 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/** @file rs_graphics.rsh
|
||||
* \brief RenderScript graphics API
|
||||
*
|
||||
* A set of graphics functions used by RenderScript.
|
||||
*
|
||||
*/
|
||||
#ifndef __RS_GRAPHICS_RSH__
|
||||
#define __RS_GRAPHICS_RSH__
|
||||
|
||||
#include "rs_mesh.rsh"
|
||||
#include "rs_program.rsh"
|
||||
|
||||
#if (defined(RS_VERSION) && (RS_VERSION >= 14))
|
||||
/**
|
||||
* Set the color target used for all subsequent rendering calls
|
||||
* @param colorTarget
|
||||
* @param slot
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindColorTarget(rs_allocation colorTarget, uint slot);
|
||||
|
||||
/**
|
||||
* Clear the previously set color target
|
||||
* @param slot
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgClearColorTarget(uint slot);
|
||||
|
||||
/**
|
||||
* Set the depth target used for all subsequent rendering calls
|
||||
* @param depthTarget
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindDepthTarget(rs_allocation depthTarget);
|
||||
|
||||
/**
|
||||
* Clear the previously set depth target
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgClearDepthTarget(void);
|
||||
|
||||
/**
|
||||
* Clear all color and depth targets and resume rendering into
|
||||
* the framebuffer
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgClearAllRenderTargets(void);
|
||||
|
||||
/**
|
||||
* Force RenderScript to finish all rendering commands
|
||||
*/
|
||||
extern uint __attribute__((overloadable))
|
||||
rsgFinish(void);
|
||||
|
||||
#endif //defined(RS_VERSION) && (RS_VERSION >= 14)
|
||||
|
||||
/**
|
||||
* Bind a new ProgramFragment to the rendering context.
|
||||
*
|
||||
* @param pf
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindProgramFragment(rs_program_fragment pf);
|
||||
|
||||
/**
|
||||
* Bind a new ProgramStore to the rendering context.
|
||||
*
|
||||
* @param ps
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindProgramStore(rs_program_store ps);
|
||||
|
||||
/**
|
||||
* Bind a new ProgramVertex to the rendering context.
|
||||
*
|
||||
* @param pv
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindProgramVertex(rs_program_vertex pv);
|
||||
|
||||
/**
|
||||
* Bind a new ProgramRaster to the rendering context.
|
||||
*
|
||||
* @param pr
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindProgramRaster(rs_program_raster pr);
|
||||
|
||||
/**
|
||||
* Bind a new Sampler object to a ProgramFragment. The sampler will
|
||||
* operate on the texture bound at the matching slot.
|
||||
*
|
||||
* @param slot
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindSampler(rs_program_fragment, uint slot, rs_sampler);
|
||||
|
||||
/**
|
||||
* Bind a new Allocation object to a ProgramFragment. The
|
||||
* Allocation must be a valid texture for the Program. The sampling
|
||||
* of the texture will be controled by the Sampler bound at the
|
||||
* matching slot.
|
||||
*
|
||||
* @param slot
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindTexture(rs_program_fragment, uint slot, rs_allocation);
|
||||
|
||||
/**
|
||||
* Load the projection matrix for a currently bound fixed function
|
||||
* vertex program. Calling this function with a custom vertex shader
|
||||
* would result in an error.
|
||||
* @param proj projection matrix
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgProgramVertexLoadProjectionMatrix(const rs_matrix4x4 *proj);
|
||||
/**
|
||||
* Load the model matrix for a currently bound fixed function
|
||||
* vertex program. Calling this function with a custom vertex shader
|
||||
* would result in an error.
|
||||
* @param model model matrix
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgProgramVertexLoadModelMatrix(const rs_matrix4x4 *model);
|
||||
/**
|
||||
* Load the texture matrix for a currently bound fixed function
|
||||
* vertex program. Calling this function with a custom vertex shader
|
||||
* would result in an error.
|
||||
* @param tex texture matrix
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgProgramVertexLoadTextureMatrix(const rs_matrix4x4 *tex);
|
||||
/**
|
||||
* Get the projection matrix for a currently bound fixed function
|
||||
* vertex program. Calling this function with a custom vertex shader
|
||||
* would result in an error.
|
||||
* @param proj matrix to store the current projection matrix into
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgProgramVertexGetProjectionMatrix(rs_matrix4x4 *proj);
|
||||
|
||||
/**
|
||||
* Set the constant color for a fixed function emulation program.
|
||||
*
|
||||
* @param pf
|
||||
* @param r
|
||||
* @param g
|
||||
* @param b
|
||||
* @param a
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgProgramFragmentConstantColor(rs_program_fragment pf, float r, float g, float b, float a);
|
||||
|
||||
/**
|
||||
* Bind a new Allocation object to a ProgramFragment. The
|
||||
* Allocation must be a valid constant input for the Program.
|
||||
*
|
||||
* @param ps program object
|
||||
* @param slot index of the constant buffer on the program
|
||||
* @param c constants to bind
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindConstant(rs_program_fragment ps, uint slot, rs_allocation c);
|
||||
|
||||
/**
|
||||
* Bind a new Allocation object to a ProgramVertex. The
|
||||
* Allocation must be a valid constant input for the Program.
|
||||
*
|
||||
* @param pv program object
|
||||
* @param slot index of the constant buffer on the program
|
||||
* @param c constants to bind
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindConstant(rs_program_vertex pv, uint slot, rs_allocation c);
|
||||
|
||||
/**
|
||||
* Get the width of the current rendering surface.
|
||||
*
|
||||
* @return uint
|
||||
*/
|
||||
extern uint __attribute__((overloadable))
|
||||
rsgGetWidth(void);
|
||||
|
||||
/**
|
||||
* Get the height of the current rendering surface.
|
||||
*
|
||||
* @return uint
|
||||
*/
|
||||
extern uint __attribute__((overloadable))
|
||||
rsgGetHeight(void);
|
||||
|
||||
|
||||
/**
|
||||
* Sync the contents of an allocation from its SCRIPT memory space to its HW
|
||||
* memory spaces.
|
||||
*
|
||||
* @param alloc
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgAllocationSyncAll(rs_allocation alloc);
|
||||
|
||||
#if (defined(RS_VERSION) && (RS_VERSION >= 14))
|
||||
|
||||
/**
|
||||
* Sync the contents of an allocation from memory space
|
||||
* specified by source.
|
||||
*
|
||||
* @param alloc
|
||||
* @param source
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgAllocationSyncAll(rs_allocation alloc,
|
||||
rs_allocation_usage_type source);
|
||||
|
||||
#endif //defined(RS_VERSION) && (RS_VERSION >= 14)
|
||||
|
||||
/**
|
||||
* Low performance utility function for drawing a simple rectangle. Not
|
||||
* intended for drawing large quantities of geometry.
|
||||
*
|
||||
* @param x1
|
||||
* @param y1
|
||||
* @param x2
|
||||
* @param y2
|
||||
* @param z
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawRect(float x1, float y1, float x2, float y2, float z);
|
||||
|
||||
/**
|
||||
* Low performance utility function for drawing a simple quad. Not intended for
|
||||
* drawing large quantities of geometry.
|
||||
*
|
||||
* @param x1
|
||||
* @param y1
|
||||
* @param z1
|
||||
* @param x2
|
||||
* @param y2
|
||||
* @param z2
|
||||
* @param x3
|
||||
* @param y3
|
||||
* @param z3
|
||||
* @param x4
|
||||
* @param y4
|
||||
* @param z4
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawQuad(float x1, float y1, float z1,
|
||||
float x2, float y2, float z2,
|
||||
float x3, float y3, float z3,
|
||||
float x4, float y4, float z4);
|
||||
|
||||
|
||||
/**
|
||||
* Low performance utility function for drawing a textured quad. Not intended
|
||||
* for drawing large quantities of geometry.
|
||||
*
|
||||
* @param x1
|
||||
* @param y1
|
||||
* @param z1
|
||||
* @param u1
|
||||
* @param v1
|
||||
* @param x2
|
||||
* @param y2
|
||||
* @param z2
|
||||
* @param u2
|
||||
* @param v2
|
||||
* @param x3
|
||||
* @param y3
|
||||
* @param z3
|
||||
* @param u3
|
||||
* @param v3
|
||||
* @param x4
|
||||
* @param y4
|
||||
* @param z4
|
||||
* @param u4
|
||||
* @param v4
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
|
||||
float x2, float y2, float z2, float u2, float v2,
|
||||
float x3, float y3, float z3, float u3, float v3,
|
||||
float x4, float y4, float z4, float u4, float v4);
|
||||
|
||||
|
||||
/**
|
||||
* Low performance function for drawing rectangles in screenspace. This
|
||||
* function uses the default passthough ProgramVertex. Any bound ProgramVertex
|
||||
* is ignored. This function has considerable overhead and should not be used
|
||||
* for drawing in shipping applications.
|
||||
*
|
||||
* @param x
|
||||
* @param y
|
||||
* @param z
|
||||
* @param w
|
||||
* @param h
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h);
|
||||
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawPath(rs_path p);
|
||||
|
||||
/**
|
||||
* Draw a mesh using the current context state. The whole mesh is
|
||||
* rendered.
|
||||
*
|
||||
* @param ism
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawMesh(rs_mesh ism);
|
||||
/**
|
||||
* Draw part of a mesh using the current context state.
|
||||
* @param ism mesh object to render
|
||||
* @param primitiveIndex for meshes that contain multiple primitive groups
|
||||
* this parameter specifies the index of the group to draw.
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawMesh(rs_mesh ism, uint primitiveIndex);
|
||||
/**
|
||||
* Draw specified index range of part of a mesh using the current context state.
|
||||
* @param ism mesh object to render
|
||||
* @param primitiveIndex for meshes that contain multiple primitive groups
|
||||
* this parameter specifies the index of the group to draw.
|
||||
* @param start starting index in the range
|
||||
* @param len number of indices to draw
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawMesh(rs_mesh ism, uint primitiveIndex, uint start, uint len);
|
||||
|
||||
/**
|
||||
* Clears the rendering surface to the specified color.
|
||||
*
|
||||
* @param r
|
||||
* @param g
|
||||
* @param b
|
||||
* @param a
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgClearColor(float r, float g, float b, float a);
|
||||
|
||||
/**
|
||||
* Clears the depth suface to the specified value.
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgClearDepth(float value);
|
||||
/**
|
||||
* Draws text given a string and location
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawText(const char *, int x, int y);
|
||||
/**
|
||||
* \overload
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgDrawText(rs_allocation, int x, int y);
|
||||
/**
|
||||
* Binds the font object to be used for all subsequent font rendering calls
|
||||
* @param font object to bind
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgBindFont(rs_font font);
|
||||
/**
|
||||
* Sets the font color for all subsequent rendering calls
|
||||
* @param r red component
|
||||
* @param g green component
|
||||
* @param b blue component
|
||||
* @param a alpha component
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgFontColor(float r, float g, float b, float a);
|
||||
/**
|
||||
* Returns the bounding box of the text relative to (0, 0)
|
||||
* Any of left, right, top, bottom could be NULL
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgMeasureText(const char *, int *left, int *right, int *top, int *bottom);
|
||||
/**
|
||||
* \overload
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgMeasureText(rs_allocation, int *left, int *right, int *top, int *bottom);
|
||||
/**
|
||||
* Computes an axis aligned bounding box of a mesh object
|
||||
*/
|
||||
extern void __attribute__((overloadable))
|
||||
rsgMeshComputeBoundingBox(rs_mesh mesh, float *minX, float *minY, float *minZ,
|
||||
float *maxX, float *maxY, float *maxZ);
|
||||
/**
|
||||
* \overload
|
||||
*/
|
||||
__inline__ static void __attribute__((overloadable, always_inline))
|
||||
rsgMeshComputeBoundingBox(rs_mesh mesh, float3 *bBoxMin, float3 *bBoxMax) {
|
||||
float x1, y1, z1, x2, y2, z2;
|
||||
rsgMeshComputeBoundingBox(mesh, &x1, &y1, &z1, &x2, &y2, &z2);
|
||||
bBoxMin->x = x1;
|
||||
bBoxMin->y = y1;
|
||||
bBoxMin->z = z1;
|
||||
bBoxMax->x = x2;
|
||||
bBoxMax->y = y2;
|
||||
bBoxMax->z = z2;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user