alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Java example source code file (D3DVertexCacher.h)

This example Java source code file (D3DVertexCacher.h) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

append_action, d3dcontext, d3dfvf_j2dlvertex, d3dfvf_texcoordsize2, d3dvertexcacher, d3dvertexcacher_h, drawpoly, drawtexture, hresult, j2dlvertex, max_batch_size, releasedefpoolresources, uint, vertexbatch

The D3DVertexCacher.h Java example source code

/*
 * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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 General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

#ifndef D3DVERTEXCACHER_H
#define D3DVERTEXCACHER_H

#include "jni.h"
#include "D3DContext.h"

#define MAX_BATCH_SIZE 1024
#define APPEND_ACTION 0x0
#define RESET_ACTION  0x1
#define D3DFVF_J2DLVERTEX \
    (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX2 | \
    D3DFVF_TEXCOORDSIZE2(0) | D3DFVF_TEXCOORDSIZE2(1) )
typedef struct _J2DLVERTEX {
    float x, y, z;
    DWORD color;
    float tu1, tv1;
    float tu2, tv2;
} J2DLVERTEX;

typedef struct {
    D3DPRIMITIVETYPE pType; // type of primitives in this batch
    UINT pNum; // number of primitives of pType in this batch
} VertexBatch;

class D3DContext;

class D3DPIPELINE_API D3DVertexCacher {
public:
    HRESULT Init(D3DContext *pCtx);
            ~D3DVertexCacher() { ReleaseDefPoolResources(); }
    void    ReleaseDefPoolResources();

    jint    GetColor() { return color; }
    void    SetColor(jint newColor) { color = newColor; }
    HRESULT DrawLine(int x1, int y1, int x2, int y2);
    HRESULT DrawPoly(jint nPoints, jboolean isClosed,
                     jint transX, jint transY,
                     jint *xPoints, jint *yPoints);
    HRESULT DrawScanlines(jint scanlineCount, jint *scanlines);
    HRESULT DrawRect(int x1, int y1, int x2, int y2);
    HRESULT FillRect(int x1, int y1, int x2, int y2);
    HRESULT FillParallelogramAA(float fx11, float fy11,
                                float dx21, float dy21,
                                float dx12, float dy12);
    HRESULT DrawParallelogramAA(float ox11, float oy11,
                                float ox21, float oy21,
                                float ox12, float oy12,
                                float ix11, float iy11,
                                float ix21, float iy21,
                                float ix12, float iy12);
    HRESULT FillParallelogram(float fx11, float fy11,
                              float dx21, float dy21,
                              float dx12, float dy12);
    HRESULT FillSpans(jint spansCount, jint *spans);
    HRESULT DrawTexture(float dx1, float dy1, float dx2, float dy2,
                        float tx1, float ty1, float tx2, float ty2);
    HRESULT DrawTexture(float  dx1, float  dy1, float  dx2, float  dy2,
                        float t1x1, float t1y1, float t1x2, float t1y2,
                        float t2x1, float t2y1, float t2x2, float t2y2);
    HRESULT Render(int actionType = APPEND_ACTION);
    UINT    GetFreeVertices() { return (MAX_BATCH_SIZE - firstUnusedVertex); }

static
    HRESULT CreateInstance(D3DContext *pCtx, D3DVertexCacher **ppVC);

private:
            D3DVertexCacher();
    HRESULT EnsureCapacity(D3DPRIMITIVETYPE newPType, UINT vNum);

private:
    UINT firstPendingBatch;
    UINT firstPendingVertex;
    UINT firstUnusedVertex;
    UINT currentBatch;
    J2DLVERTEX              vertices[MAX_BATCH_SIZE];
    VertexBatch             batches[MAX_BATCH_SIZE];
    IDirect3DVertexBuffer9  *lpD3DVertexBuffer;
    IDirect3DDevice9        *lpD3DDevice;
    D3DContext              *pCtx;
    jint                    color;
};

#endif // D3DVERTEXCACHER_H

Other Java examples (source code examples)

Here is a short list of links related to this Java D3DVertexCacher.h source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.