This commit is contained in:
Milan Nikolic 2017-02-21 17:16:26 +01:00
parent 10f04b58be
commit 468b700d5d
14 changed files with 130 additions and 124 deletions

View file

@ -6,33 +6,34 @@ import (
"github.com/gen2brain/raylib-go/raylib"
)
const NumTextures = 24
const numTextures = 24
// Formats
const (
PNG_R8G8B8A8 = iota
PVR_GRAYSCALE
PVR_GRAY_ALPHA
PVR_R5G6B5
PVR_R5G5B5A1
PVR_R4G4B4A4
DDS_R5G6B5
DDS_R5G5B5A1
DDS_R4G4B4A4
DDS_R8G8B8A8
DDS_DXT1_RGB
DDS_DXT1_RGBA
DDS_DXT3_RGBA
DDS_DXT5_RGBA
PKM_ETC1_RGB
PKM_ETC2_RGB
PKM_ETC2_EAC_RGBA
KTX_ETC1_RGB
KTX_ETC2_RGB
KTX_ETC2_EAC_RGBA
ASTC_4x4_LDR
ASTC_8x8_LDR
PVR_PVRT_RGB
PVR_PVRT_RGBA
PngR8g8b8a8 = iota
PvrGrayscale
PvrGrayAlpha
PvrR5g6b5
PvrR5g5b5a1
PvrR4g4b4a4
DdsR5g6b5
DdsR5g5b5a1
DdsR4g4b4a4
DdsR8g8b8a8
DdsDxt1Rgb
DdsDxt1Rgba
DdsDxt3Rgba
DdsDxt5Rgba
PkmEtc1Rgb
PkmEtc2Rgb
PkmEtc2EacRgba
KtxEtc1Rgb
KtxEtc2Rgb
KtxEtc2EacRgba
Astc4x4Ldr
Astc8x8Ldr
PvrPvrtRgb
PvrPvrtRgba
)
var formatText = []string{
@ -70,60 +71,60 @@ func main() {
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
sonic := make([]raylib.Texture2D, NumTextures)
sonic := make([]raylib.Texture2D, numTextures)
sonic[PNG_R8G8B8A8] = raylib.LoadTexture("texture_formats/sonic.png")
sonic[PngR8g8b8a8] = raylib.LoadTexture("texture_formats/sonic.png")
// Load UNCOMPRESSED PVR texture data
sonic[PVR_GRAYSCALE] = raylib.LoadTexture("texture_formats/sonic_GRAYSCALE.pvr")
sonic[PVR_GRAY_ALPHA] = raylib.LoadTexture("texture_formats/sonic_L8A8.pvr")
sonic[PVR_R5G6B5] = raylib.LoadTexture("texture_formats/sonic_R5G6B5.pvr")
sonic[PVR_R5G5B5A1] = raylib.LoadTexture("texture_formats/sonic_R5G5B5A1.pvr")
sonic[PVR_R4G4B4A4] = raylib.LoadTexture("texture_formats/sonic_R4G4B4A4.pvr")
sonic[PvrGrayscale] = raylib.LoadTexture("texture_formats/sonic_GRAYSCALE.pvr")
sonic[PvrGrayAlpha] = raylib.LoadTexture("texture_formats/sonic_L8A8.pvr")
sonic[PvrR5g6b5] = raylib.LoadTexture("texture_formats/sonic_R5G6B5.pvr")
sonic[PvrR5g5b5a1] = raylib.LoadTexture("texture_formats/sonic_R5G5B5A1.pvr")
sonic[PvrR4g4b4a4] = raylib.LoadTexture("texture_formats/sonic_R4G4B4A4.pvr")
// Load UNCOMPRESSED DDS texture data
sonic[DDS_R5G6B5] = raylib.LoadTexture("texture_formats/sonic_R5G6B5.dds")
sonic[DDS_R5G5B5A1] = raylib.LoadTexture("texture_formats/sonic_A1R5G5B5.dds")
sonic[DDS_R4G4B4A4] = raylib.LoadTexture("texture_formats/sonic_A4R4G4B4.dds")
sonic[DDS_R8G8B8A8] = raylib.LoadTexture("texture_formats/sonic_A8R8G8B8.dds")
sonic[DdsR5g6b5] = raylib.LoadTexture("texture_formats/sonic_R5G6B5.dds")
sonic[DdsR5g5b5a1] = raylib.LoadTexture("texture_formats/sonic_A1R5G5B5.dds")
sonic[DdsR4g4b4a4] = raylib.LoadTexture("texture_formats/sonic_A4R4G4B4.dds")
sonic[DdsR8g8b8a8] = raylib.LoadTexture("texture_formats/sonic_A8R8G8B8.dds")
// Load COMPRESSED DXT DDS texture data (if supported)
sonic[DDS_DXT1_RGB] = raylib.LoadTexture("texture_formats/sonic_DXT1_RGB.dds")
sonic[DDS_DXT1_RGBA] = raylib.LoadTexture("texture_formats/sonic_DXT1_RGBA.dds")
sonic[DDS_DXT3_RGBA] = raylib.LoadTexture("texture_formats/sonic_DXT3_RGBA.dds")
sonic[DDS_DXT5_RGBA] = raylib.LoadTexture("texture_formats/sonic_DXT5_RGBA.dds")
sonic[DdsDxt1Rgb] = raylib.LoadTexture("texture_formats/sonic_DXT1_RGB.dds")
sonic[DdsDxt1Rgba] = raylib.LoadTexture("texture_formats/sonic_DXT1_RGBA.dds")
sonic[DdsDxt3Rgba] = raylib.LoadTexture("texture_formats/sonic_DXT3_RGBA.dds")
sonic[DdsDxt5Rgba] = raylib.LoadTexture("texture_formats/sonic_DXT5_RGBA.dds")
// Load COMPRESSED ETC texture data (if supported)
sonic[PKM_ETC1_RGB] = raylib.LoadTexture("texture_formats/sonic_ETC1_RGB.pkm")
sonic[PKM_ETC2_RGB] = raylib.LoadTexture("texture_formats/sonic_ETC2_RGB.pkm")
sonic[PKM_ETC2_EAC_RGBA] = raylib.LoadTexture("texture_formats/sonic_ETC2_EAC_RGBA.pkm")
sonic[PkmEtc1Rgb] = raylib.LoadTexture("texture_formats/sonic_ETC1_RGB.pkm")
sonic[PkmEtc2Rgb] = raylib.LoadTexture("texture_formats/sonic_ETC2_RGB.pkm")
sonic[PkmEtc2EacRgba] = raylib.LoadTexture("texture_formats/sonic_ETC2_EAC_RGBA.pkm")
sonic[KTX_ETC1_RGB] = raylib.LoadTexture("texture_formats/sonic_ETC1_RGB.ktx")
sonic[KTX_ETC2_RGB] = raylib.LoadTexture("texture_formats/sonic_ETC2_RGB.ktx")
sonic[KTX_ETC2_EAC_RGBA] = raylib.LoadTexture("texture_formats/sonic_ETC2_EAC_RGBA.ktx")
sonic[KtxEtc1Rgb] = raylib.LoadTexture("texture_formats/sonic_ETC1_RGB.ktx")
sonic[KtxEtc2Rgb] = raylib.LoadTexture("texture_formats/sonic_ETC2_RGB.ktx")
sonic[KtxEtc2EacRgba] = raylib.LoadTexture("texture_formats/sonic_ETC2_EAC_RGBA.ktx")
// Load COMPRESSED ASTC texture data (if supported)
sonic[ASTC_4x4_LDR] = raylib.LoadTexture("texture_formats/sonic_ASTC_4x4_ldr.astc")
sonic[ASTC_8x8_LDR] = raylib.LoadTexture("texture_formats/sonic_ASTC_8x8_ldr.astc")
sonic[Astc4x4Ldr] = raylib.LoadTexture("texture_formats/sonic_ASTC_4x4_ldr.astc")
sonic[Astc8x8Ldr] = raylib.LoadTexture("texture_formats/sonic_ASTC_8x8_ldr.astc")
// Load COMPRESSED PVR texture data (if supported)
sonic[PVR_PVRT_RGB] = raylib.LoadTexture("texture_formats/sonic_PVRT_RGB.pvr")
sonic[PVR_PVRT_RGBA] = raylib.LoadTexture("texture_formats/sonic_PVRT_RGBA.pvr")
sonic[PvrPvrtRgb] = raylib.LoadTexture("texture_formats/sonic_PVRT_RGB.pvr")
sonic[PvrPvrtRgba] = raylib.LoadTexture("texture_formats/sonic_PVRT_RGBA.pvr")
selectedFormat := PNG_R8G8B8A8
selectedFormat := PngR8g8b8a8
selectRecs := make([]raylib.Rectangle, NumTextures)
selectRecs := make([]raylib.Rectangle, numTextures)
for i := 0; i < NumTextures; i++ {
if i < NumTextures/2 {
for i := 0; i < numTextures; i++ {
if i < numTextures/2 {
selectRecs[i] = raylib.NewRectangle(40, int32(30+32*i), 150, 30)
} else {
selectRecs[i] = raylib.NewRectangle(40+152, int32(30+32*(i-NumTextures/2)), 150, 30)
selectRecs[i] = raylib.NewRectangle(40+152, int32(30+32*(i-numTextures/2)), 150, 30)
}
}
// Texture sizes in KB
var textureSizes = [NumTextures]int{
var textureSizes = [numTextures]int{
512 * 512 * 32 / 8 / 1024, //PNG_R8G8B8A8 (32 bpp)
512 * 512 * 8 / 8 / 1024, //PVR_GRAYSCALE (8 bpp)
512 * 512 * 16 / 8 / 1024, //PVR_GRAY_ALPHA (16 bpp)
@ -157,21 +158,21 @@ func main() {
if raylib.IsKeyPressed(raylib.KeyDown) {
selectedFormat++
if selectedFormat >= NumTextures {
if selectedFormat >= numTextures {
selectedFormat = 0
}
} else if raylib.IsKeyPressed(raylib.KeyUp) {
selectedFormat--
if selectedFormat < 0 {
selectedFormat = NumTextures - 1
selectedFormat = numTextures - 1
}
} else if raylib.IsKeyPressed(raylib.KeyRight) {
if selectedFormat < NumTextures/2 {
selectedFormat += NumTextures / 2
if selectedFormat < numTextures/2 {
selectedFormat += numTextures / 2
}
} else if raylib.IsKeyPressed(raylib.KeyLeft) {
if selectedFormat >= NumTextures/2 {
selectedFormat -= NumTextures / 2
if selectedFormat >= numTextures/2 {
selectedFormat -= numTextures / 2
}
}
@ -182,7 +183,7 @@ func main() {
raylib.ClearBackground(raylib.RayWhite)
// Draw rectangles
for i := 0; i < NumTextures; i++ {
for i := 0; i < numTextures; i++ {
if i == selectedFormat {
raylib.DrawRectangleRec(selectRecs[i], raylib.SkyBlue)
raylib.DrawRectangleLines(selectRecs[i].X, selectRecs[i].Y, selectRecs[i].Width, selectRecs[i].Height, raylib.Blue)
@ -195,7 +196,7 @@ func main() {
}
// Draw selected texture
if sonic[selectedFormat].Id != 0 {
if sonic[selectedFormat].ID != 0 {
raylib.DrawTexture(sonic[selectedFormat], 350, -10, raylib.White)
} else {
raylib.DrawRectangleLines(488, 165, 200, 110, raylib.DarkGray)
@ -211,7 +212,7 @@ func main() {
raylib.EndDrawing()
}
for i := 0; i < NumTextures; i++ {
for i := 0; i < numTextures; i++ {
raylib.UnloadTexture(sonic[i])
}

View file

@ -4,8 +4,9 @@ import (
"github.com/gen2brain/raylib-go/raylib"
)
const NumProcesses = 8
const numProcesses = 8
// Process
const (
None = iota
ColorGrayscale
@ -41,9 +42,9 @@ func main() {
currentProcess := None
textureReload := false
selectRecs := make([]raylib.Rectangle, NumProcesses)
selectRecs := make([]raylib.Rectangle, numProcesses)
for i := int32(0); i < NumProcesses; i++ {
for i := int32(0); i < numProcesses; i++ {
selectRecs[i] = raylib.NewRectangle(40, 50+32*i, 150, 30)
}
@ -110,7 +111,7 @@ func main() {
raylib.DrawText("IMAGE PROCESSING:", 40, 30, 10, raylib.DarkGray)
// Draw rectangles
for i := 0; i < NumProcesses; i++ {
for i := 0; i < numProcesses; i++ {
if i == currentProcess {
raylib.DrawRectangleRec(selectRecs[i], raylib.SkyBlue)
raylib.DrawRectangleLines(selectRecs[i].X, selectRecs[i].Y, selectRecs[i].Width, selectRecs[i].Height, raylib.Blue)

View file

@ -5,10 +5,10 @@ import (
)
const (
MaxParticles = 200
maxParticles = 200
)
type Particle struct {
type particle struct {
Position raylib.Vector2
Color raylib.Color
Alpha float32
@ -25,10 +25,10 @@ func main() {
raylib.InitWindow(screenWidth, screenHeight, "raylib [textures] example - particles trail blending")
// Particles pool, reuse them!
mouseTail := make([]Particle, MaxParticles)
mouseTail := make([]particle, maxParticles)
// Initialize particles
for i := 0; i < MaxParticles; i++ {
for i := 0; i < maxParticles; i++ {
mouseTail[i].Position = raylib.NewVector2(0, 0)
mouseTail[i].Color = raylib.NewColor(byte(raylib.GetRandomValue(0, 255)), byte(raylib.GetRandomValue(0, 255)), byte(raylib.GetRandomValue(0, 255)), 255)
mouseTail[i].Alpha = 1.0
@ -52,16 +52,16 @@ func main() {
// NOTE: Particles initial position should be mouse position when activated
// NOTE: Particles fall down with gravity and rotation... and disappear after 2 seconds (alpha = 0)
// NOTE: When a particle disappears, active = false and it can be reused.
for i := 0; i < MaxParticles; i++ {
for i := 0; i < maxParticles; i++ {
if !mouseTail[i].Active {
mouseTail[i].Active = true
mouseTail[i].Alpha = 1.0
mouseTail[i].Position = raylib.GetMousePosition()
i = MaxParticles
i = maxParticles
}
}
for i := 0; i < MaxParticles; i++ {
for i := 0; i < maxParticles; i++ {
if mouseTail[i].Active {
mouseTail[i].Position.Y += gravity
mouseTail[i].Alpha -= 0.01
@ -91,7 +91,7 @@ func main() {
raylib.BeginBlendMode(blending)
// Draw active particles
for i := 0; i < MaxParticles; i++ {
for i := 0; i < maxParticles; i++ {
if mouseTail[i].Active {
raylib.DrawTexturePro(
smoke,