From 8fa575dce25f03393bdff9a5e3bccb0a7e29ab40 Mon Sep 17 00:00:00 2001 From: Milan Nikolic Date: Tue, 14 Feb 2017 07:40:25 +0100 Subject: [PATCH] Add texture from image.Image example --- examples/textures/image_image/main.go | 66 ++++++++++++++++++ examples/textures/image_image/raylib_logo.png | Bin 0 -> 3760 bytes 2 files changed, 66 insertions(+) create mode 100644 examples/textures/image_image/main.go create mode 100644 examples/textures/image_image/raylib_logo.png diff --git a/examples/textures/image_image/main.go b/examples/textures/image_image/main.go new file mode 100644 index 0000000..b9ec1c8 --- /dev/null +++ b/examples/textures/image_image/main.go @@ -0,0 +1,66 @@ +package main + +import ( + "image/png" + "os" + + "github.com/gen2brain/raylib-go/raylib" +) + +func main() { + screenWidth := int32(800) + screenHeight := int32(450) + + raylib.InitWindow(screenWidth, screenHeight, "raylib [textures] example - texture from image.Image") + + r, err := os.Open("raylib_logo.png") + if err != nil { + raylib.TraceLog(raylib.LogError, err.Error()) + } + defer r.Close() + + img, err := png.Decode(r) + if err != nil { + raylib.TraceLog(raylib.LogError, err.Error()) + } + + // Get image size + size := img.Bounds().Size() + + // Dynamic memory allocation to store pixels data (Color type) + pixels := make([]raylib.Color, size.X*size.Y) + + for y := 0; y < size.Y; y++ { + for x := 0; x < size.X; x++ { + color := img.At(x, y) + r, g, b, a := color.RGBA() + pixels[x+y*size.Y] = raylib.NewColor(uint8(r), uint8(g), uint8(b), uint8(a)) + } + } + + // Load pixels data into an image structure and create texture + imEx := raylib.LoadImageEx(pixels, int32(size.X), int32(size.Y)) + texture := raylib.LoadTextureFromImage(imEx) + + // Unload CPU (RAM) image data + raylib.UnloadImage(imEx) + + // Unload CPU (RAM) pixels data + pixels = nil + + raylib.SetTargetFPS(60) + + for !raylib.WindowShouldClose() { + raylib.BeginDrawing() + + raylib.ClearBackground(raylib.RayWhite) + raylib.DrawTexture(texture, screenWidth/2-texture.Width/2, screenHeight/2-texture.Height/2, raylib.White) + raylib.DrawText("this IS a texture loaded from an image.Image!", 285, 370, 10, raylib.Gray) + + raylib.EndDrawing() + } + + raylib.UnloadTexture(texture) + + raylib.CloseWindow() +} diff --git a/examples/textures/image_image/raylib_logo.png b/examples/textures/image_image/raylib_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..66545627719a2ab9aa73a0a801d94a0ea078b278 GIT binary patch literal 3760 zcmaJ^X;_n27ETBl!y=o4A`%rD#-R#`fH;-Jh@t}(#v%eb1f)WxXwV=8fe<#uk;Q5q zpbao+1sWEyRInv9L3zLh1CCFq0zxcmD2sr|7LqXMehFY(+aEmS`@VbbIp=-fbI!fz zy!X26X`5-|a5%j^yWRHTaCrEM$1T=?e~%3)_UMVZ&z**=6q)}551L`yKiZDN-N@FF z2W!DIDRQ?z6Ng)J2mRrj8Ks}VOS7n*eo-GYLZf1WPaeT}2Om8iwQ=uGpViS08yz>= z+q;j^oMAb6kK1-1R^U+Qqmx}fRHih`OWX@Lxvq};s$S6eoqj^GzkyV0I8C;lnez7ILGAoG-y@^YOQ-ZDD4VBIau+%He>p z@f?Y`!a^v{tR&kH?I=ufe&S2>oN2QjJWgp4e<-j=ZthQ+u4^W~usqyx*7fle=S9~s zMf%ZI0!`@@Dc@l$1-&N1hJ5zT^rK{1YHSKKI*t}&SxihM)p$JYrXMz|m4TaSQoYIH zfM(kU7uVG;S0UzvKIX_GX}POFoDhiZ65Jj1)j5dYYX$j2z1q-Yq@UP0_TZZWvVBEw zj)W^F-1_0sI5G~|8BYyIIFZH{Nm+^}1NgbVSFgKsP+^5W`(BZ83?6SS6KGyn>iql; zHr#5N+;=h-l7MJkIB^G2K4e*LT8r!I#?2ynG7~812MV?-jkwjPaR;1#U?UusbO#+I zA(X1>6q*Od2%)<6+cK2rW|t=1XQfO!#U-9Q$_3+i4wLs&c5eHqM`V`%$RU-bg!@c` z<%pmPUJ{fgbv}coNx_3AToJ<#na(VRc);CrV9IJsGjUy56c&@YJXJJ`|7Itmq-7<) zRy>gdhS~mi2MLI#Ftb_GC1x!O71I1W$EB>5u~fz5matk}U?%dC>%66TK<$t*(j7W% zYo9qrIosXYKX70hXrLKler+NwLr~sWt4u3XdGivQw=#6mW}Da=uckQhZkR*z1#aCc z12vCAm#Yx+Oq=vb*AR&ngHpY1PQ^GxF%osbQ;wwm*^p^2hKJ~xhTpL$49xPo{rGrC z%!1$GWIT`L6ld_*gwhCN$qOAP{5)Nerb06D`N>^?Dv0~Rh_NhC%^gT71pWMCbkXpf zS(8^Ex9%Yj;IFWHf^YFpU|&T`%=ry2by_3gYL_mq!jSY|f~Rd8YHFVnQ_;qoALR6`GwDQRn3_L=cxkCVoBdZEWQZh^r){kOM@J zk%01=R&trOKs;8gby`&&eKJ)qW7B$cR8h8tt}Q*OVH&VhD3t7XP*>hP*%9#w=~Xd$~)c`cFDqs{|Os1sVW zoh*M~J;-q$ej|QuT?N7s`d%3^vKFh`=6_F_R;p0MTEK66mqTV@n@h}BYO?~ms1KAv zmhm&h&QH`W&)BXRp|7u;YwW0R&9@#PPz@n;kebV?0P*)mq6t=&?=m)E`X|YQZqfDr&HCbAO>W?aSGm;R(*4m_e7*zl-4>x~5v+4l#ce zni;0~d@((Fm9SnlbI3M76ZW0|lSU=-SKxYv@H?P2dPIr_G)JWFK3Jr3I2Jg_K0Tg3f#6JCoAC6iFU3DNp`R zTWox2oljc-onDT2eln5;i!n-U85UZA(b}TF!KWM^nWK_Ppwu)AEEvIyi)0(-x?Z`3 z@YE}Ja9wMcinc)AmXPbfKz`XeI~I%ALyLLqB`@jwICLCWS$SNsyUbf*a)#xnv|=qy zC>}N5YV9iMN!o^98t~{mn1k3%ZqfLbvTXT3OOYaWsVPbHm4J^`Qou-13ws`q#LxjYy7gk-?U;NpjB*V1uq*k51{-sTk*$BgN zO;ghTqJSjBJ4j*?Nsg7mblOb~OYQwdW_Py1E^{#LnDCgEy?ZH`oK8NU%JZ%erUy5ECjv?OhZF^TCikL-TKc5%yfdF$#Fjl|k&0pG zO{zu|*d#Ey;Ap}-5aNXS`c>#@;kuKH#dequd%c9Q7CQ3R3?H<1iZA&B`??>X05!B{ z^Y~)re^JDa8Hk5G8_4zppX*H#5YOeJ@m>pzP)sA^&reWGo8&(ZQL(kHoAZgOe;7i4 zj_?RUVzQd^OLLvt&3#cTkz-LKR)sF71bOf^*Hz2JR6 zhP)m+!Wg$tTYI*LB*g_Luec$UYL$H86LRYv95L2?=7=%jEn9x$J;bEYlP~!ul9Z>} z8Gb-7&wJY>o85&0zO7*=hN`XNCVB%q<*!sQKZT7(b80C!N}Kr4CWr{a-@Cnv&73fu z@*9Xw+PF<3!)|i%``4;MOg&Q2_RJ3mM;gqsYd4ad?3$n*-h?m5X3lU>BfWs# zclr#(ptWl$PrYbP-{xBj=VBxjSQx+pRA%aO2LsSI&{FdTAN#>b9c~|Fj=uW_xv7=C z4A$FcB$?y)^Xtb#Fq(F zRJfkK^b6d{G0Q31cmQ^e9F$wJ&cG?QTbt2a@uT_-gq`!cwKHz1dV8H#WKHXUI}73$ zg=2h|WI)%xeK5%|ZsFjre|HdVgN(4lqFl$>6m_1I!nQv?8!a5b*(A|uq1`(te%Aa& zVX~$JI~|}w3t4bsn7?zMdEe374sHhOail)1ILnM8qHW5^24qS727v%>M`Oz4qLtiU z++W}(VlG@~8