make lots of functions public
parent
fc628f2ee9
commit
b87e61aa4e
8
gg/gg.v
8
gg/gg.v
|
@ -47,7 +47,7 @@ struct Character {
|
||||||
advance u32
|
advance u32
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init() {
|
pub fn init() {
|
||||||
println(gl.TEXT_VERT)
|
println(gl.TEXT_VERT)
|
||||||
gl.init_glad()
|
gl.init_glad()
|
||||||
}
|
}
|
||||||
|
@ -198,7 +198,7 @@ pub fn (ctx &GG) draw_triangle_tex(x1, y1, x2, y2, x3, y3 f32, c gx.Color) {
|
||||||
gl.draw_elements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0)
|
gl.draw_elements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (ctx &GG) draw_rect(x, y, w, h f32, c gx.Color) {
|
pub fn (ctx &GG) draw_rect(x, y, w, h f32, c gx.Color) {
|
||||||
// println('gg.draw_rect($x,$y,$w,$h)')
|
// println('gg.draw_rect($x,$y,$w,$h)')
|
||||||
// wrong order
|
// wrong order
|
||||||
// // ctx.draw_triangle(x, y, x + w, y, x + w, y + h, c)
|
// // ctx.draw_triangle(x, y, x + w, y, x + w, y + h, c)
|
||||||
|
@ -231,7 +231,7 @@ fn (ctx mut GG) init_rect_vao() {
|
||||||
gl.set_ebo(ebo, indices, GL_STATIC_DRAW)
|
gl.set_ebo(ebo, indices, GL_STATIC_DRAW)
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
fn (ctx &GG) draw_rect2(x, y, w, h f32, c gx.Color) {
|
pub fn (ctx &GG) draw_rect2(x, y, w, h f32, c gx.Color) {
|
||||||
C.glDeleteBuffers(1, &ctx.VAO)
|
C.glDeleteBuffers(1, &ctx.VAO)
|
||||||
C.glDeleteBuffers(1, &ctx.VBO)
|
C.glDeleteBuffers(1, &ctx.VBO)
|
||||||
ctx.shader.use()
|
ctx.shader.use()
|
||||||
|
@ -305,7 +305,7 @@ fn ft_load_char(_face Face, code i64) Character {
|
||||||
return ch
|
return ch
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_context_text(cfg Cfg, scale int) *GG {
|
pub fn new_context_text(cfg Cfg, scale int) *GG {
|
||||||
// Can only have text in ortho mode
|
// Can only have text in ortho mode
|
||||||
if !cfg.use_ortho {
|
if !cfg.use_ortho {
|
||||||
return &GG{text_ctx: 0}
|
return &GG{text_ctx: 0}
|
||||||
|
|
2
gl/gl.v
2
gl/gl.v
|
@ -20,7 +20,7 @@ import const (
|
||||||
#include "glad.h"
|
#include "glad.h"
|
||||||
#include "glad.c"
|
#include "glad.c"
|
||||||
|
|
||||||
fn init_glad() {
|
pub fn init_glad() {
|
||||||
ok := C.gladLoadGL()
|
ok := C.gladLoadGL()
|
||||||
if !ok {
|
if !ok {
|
||||||
println('Failed to initialize glad OpenGL context')
|
println('Failed to initialize glad OpenGL context')
|
||||||
|
|
68
glfw/glfw.v
68
glfw/glfw.v
|
@ -124,10 +124,10 @@ struct Pos {
|
||||||
y int
|
y int
|
||||||
}
|
}
|
||||||
|
|
||||||
// type clickfn fn (window * GLFWwindow, button, action, mods int)
|
// type clickpub fn pub fn (window * GLFWwindow, button, action, mods int)
|
||||||
type clickfn fn (window voidptr, button, action, mods int)
|
type clickpubfn fn (window voidptr, button, action, mods int)
|
||||||
|
|
||||||
fn init() {
|
pub fn init() {
|
||||||
C.glfwInit()
|
C.glfwInit()
|
||||||
# glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
# glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||||
# glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
# glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||||
|
@ -135,17 +135,17 @@ fn init() {
|
||||||
# glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
# glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn mouse_move(w * GLFWwindow, x, y double) {
|
// pub fn mouse_move(w * GLFWwindow, x, y double) {
|
||||||
fn mouse_move(w voidptr, x, y f64) {
|
pub fn mouse_move(w voidptr, x, y f64) {
|
||||||
// #printf("%f : %f => %d \n", x,y);
|
// #printf("%f : %f => %d \n", x,y);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn create_window(title string, w, h int) * Window {
|
// pub fn create_window(title string, w, h int) * Window {
|
||||||
fn window_hint(key, val int) {
|
pub fn window_hint(key, val int) {
|
||||||
C.glfwWindowHint(key, val)
|
C.glfwWindowHint(key, val)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_window(c WinCfg) *Window {
|
pub fn create_window(c WinCfg) *Window {
|
||||||
// TODO why i need this in stdlib? extern?
|
// TODO why i need this in stdlib? extern?
|
||||||
// # if (!gconst_init) { init_consts(); gconst_init = 1; }
|
// # if (!gconst_init) { init_consts(); gconst_init = 1; }
|
||||||
// ChatsRepo
|
// ChatsRepo
|
||||||
|
@ -180,92 +180,92 @@ fn create_window(c WinCfg) *Window {
|
||||||
return window
|
return window
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) set_title(title string) {
|
pub fn (w &Window) set_title(title string) {
|
||||||
C.glfwSetWindowTitle(w.data, title.str)
|
C.glfwSetWindowTitle(w.data, title.str)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) make_context_current() {
|
pub fn (w &Window) make_context_current() {
|
||||||
// ChatsRepo
|
// ChatsRepo
|
||||||
kkk := 0
|
kkk := 0
|
||||||
// println('making context current' )
|
// println('making context current' )
|
||||||
C.glfwMakeContextCurrent(w.data)
|
C.glfwMakeContextCurrent(w.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn swap_interval(interval int) {
|
pub fn swap_interval(interval int) {
|
||||||
C.glfwSwapInterval(interval)
|
C.glfwSwapInterval(interval)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn wait_events() {
|
pub fn wait_events() {
|
||||||
C.glfwWaitEvents()
|
C.glfwWaitEvents()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn poll_events() {
|
pub fn poll_events() {
|
||||||
C.glfwPollEvents()
|
C.glfwPollEvents()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) should_close() bool {
|
pub fn (w &Window) should_close() bool {
|
||||||
// ChatsRepo
|
// ChatsRepo
|
||||||
return C.glfwWindowShouldClose(w.data)
|
return C.glfwWindowShouldClose(w.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) swap_buffers() {
|
pub fn (w &Window) swap_buffers() {
|
||||||
C.glfwSwapBuffers(w.data)
|
C.glfwSwapBuffers(w.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w mut Window) onmousemove(cb voidptr) {
|
pub fn (w mut Window) onmousemove(cb voidptr) {
|
||||||
C.glfwSetCursorPosCallback(w.data, cb)
|
C.glfwSetCursorPosCallback(w.data, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w mut Window) set_mouse_button_callback(cb voidptr) {
|
pub fn (w mut Window) set_mouse_button_callback(cb voidptr) {
|
||||||
C.glfwSetMouseButtonCallback(w.data, cb)
|
C.glfwSetMouseButtonCallback(w.data, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w mut Window) on_click(cb voidptr) {
|
pub fn (w mut Window) on_click(cb voidptr) {
|
||||||
C.glfwSetMouseButtonCallback(w.data, cb)
|
C.glfwSetMouseButtonCallback(w.data, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) set_scroll_callback(cb voidptr) {
|
pub fn (w &Window) set_scroll_callback(cb voidptr) {
|
||||||
C.glfwSetScrollCallback(w.data, cb)
|
C.glfwSetScrollCallback(w.data, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) on_scroll(cb voidptr) {
|
pub fn (w &Window) on_scroll(cb voidptr) {
|
||||||
C.glfwSetScrollCallback(w.data, cb)
|
C.glfwSetScrollCallback(w.data, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn post_empty_event() {
|
pub fn post_empty_event() {
|
||||||
C.glfwPostEmptyEvent()
|
C.glfwPostEmptyEvent()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w mut Window) onkeydown(cb voidptr) {
|
pub fn (w mut Window) onkeydown(cb voidptr) {
|
||||||
C.glfwSetKeyCallback(w.data, cb)
|
C.glfwSetKeyCallback(w.data, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w mut Window) onchar(cb voidptr) {
|
pub fn (w mut Window) onchar(cb voidptr) {
|
||||||
C.glfwSetCharModsCallback(w.data, cb)
|
C.glfwSetCharModsCallback(w.data, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_time() f64 {
|
pub fn get_time() f64 {
|
||||||
return C.glfwGetTime()
|
return C.glfwGetTime()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn key_pressed(wnd voidptr, key int) bool {
|
pub fn key_pressed(wnd voidptr, key int) bool {
|
||||||
# return glfwGetKey(wnd, key) == GLFW_PRESS;
|
# return glfwGetKey(wnd, key) == GLFW_PRESS;
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO not mut
|
// TODO not mut
|
||||||
fn (w mut Window) get_clipboard_text() string {
|
pub fn (w mut Window) get_clipboard_text() string {
|
||||||
return tos2(C.glfwGetClipboardString(w.data))
|
return tos2(C.glfwGetClipboardString(w.data))
|
||||||
// # char *c = glfwGetClipboardString(w->data);
|
// # char *c = glfwGetClipboardString(w->data);
|
||||||
// # return tos_no_len(c);
|
// # return tos_no_len(c);
|
||||||
// return ''
|
// return ''
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) set_clipboard_text(s string) {
|
pub fn (w &Window) set_clipboard_text(s string) {
|
||||||
C.glfwSetClipboardString(w.data, s.str)
|
C.glfwSetClipboardString(w.data, s.str)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) get_cursor_pos() Pos {
|
pub fn (w &Window) get_cursor_pos() Pos {
|
||||||
x := f64(0)
|
x := f64(0)
|
||||||
y := f64(0)
|
y := f64(0)
|
||||||
C.glfwGetCursorPos(w.data, &x, &y)
|
C.glfwGetCursorPos(w.data, &x, &y)
|
||||||
|
@ -275,17 +275,17 @@ fn (w &Window) get_cursor_pos() Pos {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) user_ptr() voidptr {
|
pub fn (w &Window) user_ptr() voidptr {
|
||||||
return C.glfwGetWindowUserPointer(w.data)
|
return C.glfwGetWindowUserPointer(w.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (w &Window) set_user_ptr(ptr voidptr) {
|
pub fn (w &Window) set_user_ptr(ptr voidptr) {
|
||||||
C.glfwSetWindowUserPointer(w.data, ptr)
|
C.glfwSetWindowUserPointer(w.data, ptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn C.glfwGetVideoMode() C.GLFWvideoMode
|
pub fn C.glfwGetVideoMode() C.GLFWvideoMode
|
||||||
|
|
||||||
fn get_monitor_size() Size {
|
pub fn get_monitor_size() Size {
|
||||||
# GLFWvidmode* mode = glfwGetVideoMode(glfwGetPrimaryMonitor());
|
# GLFWvidmode* mode = glfwGetVideoMode(glfwGetPrimaryMonitor());
|
||||||
// window_width = mode->width;
|
// window_width = mode->width;
|
||||||
// window_height = mode->height;
|
// window_height = mode->height;
|
||||||
|
@ -297,11 +297,11 @@ fn get_monitor_size() Size {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (size Size) str() string {
|
pub fn (size Size) str() string {
|
||||||
return '{$size.width, $size.height}'
|
return '{$size.width, $size.height}'
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_window_user_pointer(gwnd voidptr) voidptr {
|
pub fn get_window_user_pointer(gwnd voidptr) voidptr {
|
||||||
return C.glfwGetWindowUserPointer(gwnd)
|
return C.glfwGetWindowUserPointer(gwnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
14
glm/glm.v
14
glm/glm.v
|
@ -134,7 +134,7 @@ fn f32_calloc(n int) *f32 {
|
||||||
return *f32(calloc(n * sizeof(f32)))
|
return *f32(calloc(n * sizeof(f32)))
|
||||||
}
|
}
|
||||||
// fn translate(vec Vec3) *f32 {
|
// fn translate(vec Vec3) *f32 {
|
||||||
fn translate(m Mat4, v Vec3) Mat4 {
|
pub fn translate(m Mat4, v Vec3) Mat4 {
|
||||||
// # return glm__mat4(myglm_translate(vec.x,vec.y,vec.z) );
|
// # return glm__mat4(myglm_translate(vec.x,vec.y,vec.z) );
|
||||||
a := m.data
|
a := m.data
|
||||||
mut out := f32_calloc(16)
|
mut out := f32_calloc(16)
|
||||||
|
@ -161,7 +161,7 @@ fn normalize(vec Vec3) Vec3 {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
// https://github.com/g-truc/glm/blob/0ceb2b755fb155d593854aefe3e45d416ce153a4/glm/ext/matrix_clip_space.inl
|
// https://github.com/g-truc/glm/blob/0ceb2b755fb155d593854aefe3e45d416ce153a4/glm/ext/matrix_clip_space.inl
|
||||||
fn ortho(left, right, bottom, top f32) Mat4 {
|
pub fn ortho(left, right, bottom, top f32) Mat4 {
|
||||||
println('glm ortho($left, $right, $bottom, $top)')
|
println('glm ortho($left, $right, $bottom, $top)')
|
||||||
// mat<4, 4, T, defaultp> Result(static_cast<T>(1));
|
// mat<4, 4, T, defaultp> Result(static_cast<T>(1));
|
||||||
n := 16
|
n := 16
|
||||||
|
@ -176,7 +176,7 @@ fn ortho(left, right, bottom, top f32) Mat4 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn scale(a *f32, v Vec3) *f32 {
|
// fn scale(a *f32, v Vec3) *f32 {
|
||||||
fn scale(m Mat4, v Vec3) Mat4 {
|
pub fn scale(m Mat4, v Vec3) Mat4 {
|
||||||
a := m.data
|
a := m.data
|
||||||
mut out := f32_calloc(16)
|
mut out := f32_calloc(16)
|
||||||
x := v.x
|
x := v.x
|
||||||
|
@ -202,7 +202,7 @@ fn scale(m Mat4, v Vec3) Mat4 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn rotate_z(a *f32, rad f32) *f32 {
|
// fn rotate_z(a *f32, rad f32) *f32 {
|
||||||
fn rotate_z(m Mat4, rad f32) Mat4 {
|
pub fn rotate_z(m Mat4, rad f32) Mat4 {
|
||||||
a := m.data
|
a := m.data
|
||||||
mut out := f32_calloc(16)
|
mut out := f32_calloc(16)
|
||||||
s := math.sin(rad)
|
s := math.sin(rad)
|
||||||
|
@ -235,7 +235,7 @@ fn rotate_z(m Mat4, rad f32) Mat4 {
|
||||||
return mat4(out)
|
return mat4(out)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn identity() Mat4 {
|
pub fn identity() Mat4 {
|
||||||
// 1 0 0 0
|
// 1 0 0 0
|
||||||
// 0 1 0 0
|
// 0 1 0 0
|
||||||
// 0 0 1 0
|
// 0 0 1 0
|
||||||
|
@ -250,7 +250,7 @@ fn identity() Mat4 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns *f32 without allocation
|
// returns *f32 without allocation
|
||||||
fn identity2(res *f32) {
|
pub fn identity2(res *f32) {
|
||||||
res[0] = 1
|
res[0] = 1
|
||||||
res[5] = 1
|
res[5] = 1
|
||||||
res[10] = 1
|
res[10] = 1
|
||||||
|
@ -261,7 +261,7 @@ fn identity2(res *f32) {
|
||||||
// # gl__Shader_set_mat4(shader, tos2("projection"), f) ;
|
// # gl__Shader_set_mat4(shader, tos2("projection"), f) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn identity3() []f32 {
|
pub fn identity3() []f32 {
|
||||||
res := [1.0, 0, 0, 0,
|
res := [1.0, 0, 0, 0,
|
||||||
0, 1, 0, 0,
|
0, 1, 0, 0,
|
||||||
0, 0, 1, 0,
|
0, 0, 1, 0,
|
||||||
|
|
50
math/math.v
50
math/math.v
|
@ -20,111 +20,111 @@ const (
|
||||||
Log10E = 1.0 / Ln10
|
Log10E = 1.0 / Ln10
|
||||||
)
|
)
|
||||||
|
|
||||||
fn abs(a f64) f64 {
|
pub fn abs(a f64) f64 {
|
||||||
if a < 0 {
|
if a < 0 {
|
||||||
return -a
|
return -a
|
||||||
}
|
}
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
fn acos(a f64) f64 {
|
pub fn acos(a f64) f64 {
|
||||||
return C.acos(a)
|
return C.acos(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn asin(a f64) f64 {
|
pub fn asin(a f64) f64 {
|
||||||
return C.asin(a)
|
return C.asin(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn atan(a f64) f64 {
|
pub fn atan(a f64) f64 {
|
||||||
return C.atan(a)
|
return C.atan(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn atan2(a, b f64) f64 {
|
pub fn atan2(a, b f64) f64 {
|
||||||
return C.atan2(a, b)
|
return C.atan2(a, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ceil(a f64) f64 {
|
pub fn ceil(a f64) f64 {
|
||||||
return C.ceil(a)
|
return C.ceil(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cos(a f64) f64 {
|
pub fn cos(a f64) f64 {
|
||||||
return C.cos(a)
|
return C.cos(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cosh(a f64) f64 {
|
pub fn cosh(a f64) f64 {
|
||||||
return C.cosh(a)
|
return C.cosh(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn exp(a f64) f64 {
|
pub fn exp(a f64) f64 {
|
||||||
return C.exp(a)
|
return C.exp(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn floor(a f64) f64 {
|
pub fn floor(a f64) f64 {
|
||||||
return C.floor(a)
|
return C.floor(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fmod(a, b f64) f64 {
|
pub fn fmod(a, b f64) f64 {
|
||||||
return C.fmod(a, b)
|
return C.fmod(a, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn log(a f64) f64 {
|
pub fn log(a f64) f64 {
|
||||||
return C.log(a)
|
return C.log(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn log10(a f64) f64 {
|
pub fn log10(a f64) f64 {
|
||||||
return C.log10(a)
|
return C.log10(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn max(a, b f64) f64 {
|
pub fn max(a, b f64) f64 {
|
||||||
if a > b {
|
if a > b {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
fn min(a, b f64) f64 {
|
pub fn min(a, b f64) f64 {
|
||||||
if a < b {
|
if a < b {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pow(a, b f64) f64 {
|
pub fn pow(a, b f64) f64 {
|
||||||
return C.pow(a, b)
|
return C.pow(a, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn radians(degrees f64) f64 {
|
pub fn radians(degrees f64) f64 {
|
||||||
return degrees * (Pi / 180.0)
|
return degrees * (Pi / 180.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn degrees(radians f64) f64 {
|
pub fn degrees(radians f64) f64 {
|
||||||
return radians * (180.0 / Pi)
|
return radians * (180.0 / Pi)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn round(f f64) f64 {
|
pub fn round(f f64) f64 {
|
||||||
return C.round(f)
|
return C.round(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sin(a f64) f64 {
|
pub fn sin(a f64) f64 {
|
||||||
return C.sin(a)
|
return C.sin(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sinh(a f64) f64 {
|
pub fn sinh(a f64) f64 {
|
||||||
return C.sinh(a)
|
return C.sinh(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sqrt(a f64) f64 {
|
pub fn sqrt(a f64) f64 {
|
||||||
return C.sqrt(a)
|
return C.sqrt(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tan(a f64) f64 {
|
pub fn tan(a f64) f64 {
|
||||||
return C.tan(a)
|
return C.tan(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tanh(a f64) f64 {
|
pub fn tanh(a f64) f64 {
|
||||||
return C.tanh(a)
|
return C.tanh(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn trunc(a f64) f64 {
|
pub fn trunc(a f64) f64 {
|
||||||
return C.trunc(a)
|
return C.trunc(a)
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ import const (
|
||||||
STBI_rgb_alpha
|
STBI_rgb_alpha
|
||||||
)
|
)
|
||||||
|
|
||||||
fn load(path string) Image {
|
pub fn load(path string) Image {
|
||||||
ext := path.all_after('.')
|
ext := path.all_after('.')
|
||||||
mut res := Image {
|
mut res := Image {
|
||||||
ok: true
|
ok: true
|
||||||
|
@ -49,11 +49,11 @@ fn load(path string) Image {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (img Image) free() {
|
pub fn (img Image) free() {
|
||||||
C.stbi_image_free(img.data)
|
C.stbi_image_free(img.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (img Image) tex_image_2d() {
|
pub fn (img Image) tex_image_2d() {
|
||||||
mut rgb_flag := GL_RGB
|
mut rgb_flag := GL_RGB
|
||||||
if img.ext == 'png' {
|
if img.ext == 'png' {
|
||||||
rgb_flag = GL_RGBA
|
rgb_flag = GL_RGBA
|
||||||
|
@ -62,7 +62,7 @@ fn (img Image) tex_image_2d() {
|
||||||
img.data)
|
img.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_flip_vertically_on_load(val bool) {
|
pub fn set_flip_vertically_on_load(val bool) {
|
||||||
C.stbi_set_flip_vertically_on_load(val)
|
C.stbi_set_flip_vertically_on_load(val)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue