mirror of
https://github.com/godotengine/godot-angle-static.git
synced 2026-01-03 14:09:33 +03:00
Move all GLES samples into the samples directory.
There was no real reason to keep them in an angle directory and it makes the generated projects nicer. BUG=angleproject:981 Change-Id: I844e44dc5c2df51f5292cff4bdffe5e951745aae Reviewed-on: https://chromium-review.googlesource.com/266871 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
This commit is contained in:
129
samples/sample_util/texture_utils.cpp
Normal file
129
samples/sample_util/texture_utils.cpp
Normal file
@@ -0,0 +1,129 @@
|
||||
//
|
||||
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
|
||||
#include "texture_utils.h"
|
||||
#include <array>
|
||||
|
||||
GLuint CreateSimpleTexture2D()
|
||||
{
|
||||
// Use tightly packed data
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
|
||||
// Generate a texture object
|
||||
GLuint texture;
|
||||
glGenTextures(1, &texture);
|
||||
|
||||
// Bind the texture object
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
|
||||
// Load the texture: 2x2 Image, 3 bytes per pixel (R, G, B)
|
||||
const size_t width = 2;
|
||||
const size_t height = 2;
|
||||
GLubyte pixels[width * height * 3] =
|
||||
{
|
||||
255, 0, 0, // Red
|
||||
0, 255, 0, // Green
|
||||
0, 0, 255, // Blue
|
||||
255, 255, 0, // Yellow
|
||||
};
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels);
|
||||
|
||||
// Set the filtering mode
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
GLuint CreateSimpleTextureCubemap()
|
||||
{
|
||||
// Generate a texture object
|
||||
GLuint texture;
|
||||
glGenTextures(1, &texture);
|
||||
|
||||
// Bind the texture object
|
||||
glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
|
||||
|
||||
// Load the texture faces
|
||||
GLubyte pixels[6][3] =
|
||||
{
|
||||
// Face 0 - Red
|
||||
255, 0, 0,
|
||||
// Face 1 - Green,
|
||||
0, 255, 0,
|
||||
// Face 3 - Blue
|
||||
0, 0, 255,
|
||||
// Face 4 - Yellow
|
||||
255, 255, 0,
|
||||
// Face 5 - Purple
|
||||
255, 0, 255,
|
||||
// Face 6 - White
|
||||
255, 255, 255
|
||||
};
|
||||
|
||||
for (size_t i = 0; i < 6; i++)
|
||||
{
|
||||
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, &pixels[i]);
|
||||
}
|
||||
|
||||
// Set the filtering mode
|
||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
GLuint CreateMipMappedTexture2D()
|
||||
{
|
||||
// Texture object handle
|
||||
const size_t width = 256;
|
||||
const size_t height = 256;
|
||||
std::array<GLubyte, width * height * 3> pixels;
|
||||
|
||||
const size_t checkerSize = 8;
|
||||
for (GLsizei y = 0; y < height; y++)
|
||||
{
|
||||
for (GLsizei x = 0; x < width; x++)
|
||||
{
|
||||
GLubyte rColor = 0;
|
||||
GLubyte bColor = 0;
|
||||
|
||||
if ((x / checkerSize) % 2 == 0)
|
||||
{
|
||||
rColor = 255 * ((y / checkerSize) % 2);
|
||||
bColor = 255 * (1 - ((y / checkerSize) % 2));
|
||||
}
|
||||
else
|
||||
{
|
||||
bColor = 255 * ((y / checkerSize) % 2);
|
||||
rColor = 255 * (1 - ((y / checkerSize) % 2));
|
||||
}
|
||||
|
||||
pixels[(y * height + x) * 3] = rColor;
|
||||
pixels[(y * height + x) * 3 + 1] = 0;
|
||||
pixels[(y * height + x) * 3 + 2] = bColor;
|
||||
}
|
||||
}
|
||||
|
||||
// Generate a texture object
|
||||
GLuint texture;
|
||||
glGenTextures(1, &texture);
|
||||
|
||||
// Bind the texture object
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
|
||||
// Load mipmap level 0
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels.data());
|
||||
|
||||
// Generate mipmaps
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
|
||||
// Set the filtering mode
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
return texture;
|
||||
}
|
||||
Reference in New Issue
Block a user