summaryrefslogtreecommitdiffstats
path: root/Projects/Asteroids/src/sprite.h
blob: 4a8311d7976699ee75e923f75a6a1173ea50b30a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright 2014 Intel Corporation All Rights Reserved
//
// Intel makes no representations about the suitability of this software for any purpose.  
// THIS SOFTWARE IS PROVIDED ""AS IS."" INTEL SPECIFICALLY DISCLAIMS ALL WARRANTIES,
// EXPRESS OR IMPLIED, AND ALL LIABILITY, INCLUDING CONSEQUENTIAL AND OTHER INDIRECT DAMAGES,
// FOR THE USE OF THIS SOFTWARE, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PROPRIETARY
// RIGHTS, AND INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// Intel does not assume any responsibility for any errors which may appear in this software
// nor any responsibility to update it.

#pragma once

struct SpriteVertex {
    float x;
    float y;
    float u;
    float v;
};

inline SpriteVertex* DrawSprite(float x, float y, float width, float height, float viewportWidth, float viewportHeight, SpriteVertex* outVertex)
{
    outVertex[0] = {x        , y         , 0.0f, 0.0f};
    outVertex[1] = {x + width, y         , 1.0f, 0.0f};
    outVertex[2] = {x + width, y + height, 1.0f, 1.0f};
    outVertex[3] = outVertex[0];
    outVertex[4] = outVertex[2];
    outVertex[5] = {x        , y + height, 0.0f, 1.0f};

    for (int i = 0; i < 6; ++i) {
        outVertex[i].x =  (outVertex[i].x / viewportWidth  * 2.0f - 1.0f);
        outVertex[i].y = -(outVertex[i].y / viewportHeight * 2.0f - 1.0f);
    }

    outVertex += 6;
    return outVertex;
}