11bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams/*
21bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * Copyright (C) 2009 The Android Open Source Project
31bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams *
41bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
51bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * you may not use this file except in compliance with the License.
61bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * You may obtain a copy of the License at
71bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams *
81bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
91bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams *
101bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * Unless required by applicable law or agreed to in writing, software
111bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
121bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * See the License for the specific language governing permissions and
141bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams * limitations under the License.
151bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams */
161bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
171bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams#ifndef ANDROID_RS_SIMPLE_MESH_H
181bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams#define ANDROID_RS_SIMPLE_MESH_H
191bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
201bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
211bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams#include "RenderScript.h"
221bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
231bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams// ---------------------------------------------------------------------------
241bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsnamespace android {
251bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsnamespace renderscript {
261bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
271bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
281bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams// An element is a group of Components that occupies one cell in a structure.
291bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsclass SimpleMesh : public ObjectBase
301bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{
311bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samspublic:
32a9e7a05b84470257637c97d65f6562aa832c66efJason Sams    SimpleMesh(Context *);
331bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ~SimpleMesh();
341bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
351bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ObjectBaseRef<const Type> mIndexType;
361bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ObjectBaseRef<const Type> mPrimitiveType;
371bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ObjectBaseRef<const Type> *mVertexTypes;
381bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    uint32_t mVertexTypeCount;
391bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
401bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ObjectBaseRef<Allocation> mIndexBuffer;
411bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ObjectBaseRef<Allocation> mPrimitiveBuffer;
421bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ObjectBaseRef<Allocation> *mVertexBuffers;
431bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
441bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    RsPrimitive mPrimitive;
451bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    uint32_t mGLPrimitive;
461bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
471bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
48bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams    void render(Context *) const;
49bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams    void renderRange(Context *, uint32_t start, uint32_t len) const;
50bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9Jason Sams    void uploadAll(Context *);
511bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
521bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
531bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsprotected:
541bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams};
551bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
561bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samsclass SimpleMeshContext
571bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams{
581bada8cd6e4f340de93cff4a2439835fc3b1456cJason Samspublic:
591bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    SimpleMeshContext();
601bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams    ~SimpleMeshContext();
611bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
621bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
631bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams};
641bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
651bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
661bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams}
671bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams}
681bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams#endif //ANDROID_RS_SIMPLE_MESH_H
691bada8cd6e4f340de93cff4a2439835fc3b1456cJason Sams
70