pre-compiled version

This commit is contained in:
Recep Aslantas
2016-10-27 01:12:55 +03:00
parent f4e2cff63b
commit 75f5efe0bb
22 changed files with 1336 additions and 13 deletions

View File

@@ -20,29 +20,35 @@ The original glm library is for C++ only (templates, namespaces, classes...), th
##Features ##Features
- general purpose matrix operations (mat4, mat3) - general purpose matrix operations (mat4, mat3)
- chain matrix multiplication (square only)
- general purpose vector operations (cross, dot, ...) - general purpose vector operations (cross, dot, ...)
- affine transforms - affine transforms
- matrix decomposition (extract rotation, scaling factor)
- optimized affine transform matrices (mul, rigid-body inverse) - optimized affine transform matrices (mul, rigid-body inverse)
- camera (lookat) - camera (lookat)
- projections (ortho, perspective) - projections (ortho, perspective)
- quaternions - quaternions
- euler angles / yaw-pitch-roll - euler angles / yaw-pitch-roll to matrix
- extract euler angles
- inline or pre-compiled function call
<hr /> <hr />
This library is header only so you dont need link to application. All functions are marked inline (always_inline) so compiler probably will inline all these functions You have two option to call a function/operation: inline or library call (link)
Almost all functions are marked inline (always_inline) so compiler probably will inline.
To call pre-compiled version, just use `glmc_` (c stands for 'call') instead of `glm_`.
```C
#include <cglm.h> /* for inline */
#include <cglm-call.h> /* for library call (this also includes cglm.h) */
mat4 rot, trans, rt;
/* ... */
glm_mul(trans, rot, rt); /* inline */
glmc_mul(trans, rot, rt); /* call from library */
```
Most of math functions are optimized manualy with SSE2 if available, if not? Dont worry there are non-sse versions of all operations Most of math functions are optimized manualy with SSE2 if available, if not? Dont worry there are non-sse versions of all operations
This library provides:
- Simple usage
- Small memory footprint
- The codes are small and more readable than C++ templates, metafuncs
- Optimized operations with SIMD and non-SIMD
- All operations are inline (if compiler will do), no function call overhead
- Chain matrix multiplication (square only)
You can pass matrices and vectors as array to functions rather than get address. You can pass matrices and vectors as array to functions rather than get address.
```C ```C
@@ -69,8 +75,23 @@ glm_inv_tr(modelMat);
##License ##License
MIT. check the LICENSE file MIT. check the LICENSE file
##Install ## Build
Import the library to your include folder, thats it!
### Unix (Autotools)
```text
$ sh autogen.sh
$ ./configure
$ make
$ make install
$ [sudo] make install
```
### Windows (MSBuild)
```text
TODO:
```
##Notes ##Notes

21
autogen.sh Normal file
View File

@@ -0,0 +1,21 @@
#! /bin/sh
#
# Copyright (c), Recep Aslantas.
#
# MIT License (MIT), http://opensource.org/licenses/MIT
# Full license can be found in the LICENSE file
#
cd `dirname "$0"`
if [ "`uname`" = "Darwin" ]; then
libtoolBin=$(which glibtoolize)
libtoolBinDir=$(dirname "${libtoolBin}")
ln -s $libtoolBin "${libtoolBinDir}/libtoolize"
fi
autoheader
libtoolize
aclocal -I m4
autoconf
automake --add-missing --copy

57
configure.ac Normal file
View File

@@ -0,0 +1,57 @@
#*****************************************************************************
# Copyright (c), Recep Aslantas. *
# *
# MIT License (MIT), http://opensource.org/licenses/MIT *
# Full license can be found in the LICENSE file *
# *
#*****************************************************************************
AC_PREREQ([2.69])
AC_INIT([cglm], [0.1.0], [info@recp.me])
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([src/])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_INSTALL
AM_PROG_AR
AC_ENABLE_SHARED
AC_ENABLE_STATIC
LT_INIT
# Checks for libraries.
AC_CHECK_LIB([m], [floor])
AC_SYS_LARGEFILE
# Checks for header files.
AC_CHECK_HEADERS([limits.h \
stddef.h \
stdint.h \
stdlib.h \
string.h ])
# Checks for typedefs, structures, and compiler characteristics.
AC_CHECK_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_INT32_T
AC_TYPE_INT64_T
AC_TYPE_SIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_CONFIG_FILES([makefile])
AC_OUTPUT

View File

@@ -0,0 +1,85 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglmc_affine_h
#define cglmc_affine_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_translate_to(mat4 m, vec3 v, mat4 dest);
CGLM_EXPORT
void
glmc_translate(mat4 m, vec3 v);
CGLM_EXPORT
void
glmc_translate_x(mat4 m, float to);
CGLM_EXPORT
void
glmc_translate_y(mat4 m, float to);
CGLM_EXPORT
void
glmc_translate_z(mat4 m, float to);
CGLM_EXPORT
void
glmc_scale_to(mat4 m, vec3 v, mat4 dest);
CGLM_EXPORT
void
glmc_scale(mat4 m, vec3 v);
CGLM_EXPORT
void
glmc_scale1(mat4 m, float s);
CGLM_EXPORT
void
glmc_rotate_x(mat4 m, float rad, mat4 dest);
CGLM_EXPORT
void
glmc_rotate_y(mat4 m, float rad, mat4 dest);
CGLM_EXPORT
void
glmc_rotate_z(mat4 m, float rad, mat4 dest);
CGLM_EXPORT
void
glmc_rotate_ndc_make(mat4 m, float angle, vec3 axis_ndc);
CGLM_EXPORT
void
glmc_rotate_make(mat4 m, float angle, vec3 axis);
CGLM_EXPORT
void
glmc_rotate_ndc(mat4 m, float angle, vec3 axis_ndc);
CGLM_EXPORT
void
glmc_rotate(mat4 m, float angle, vec3 axis);
CGLM_EXPORT
void
glmc_decompose_scalev(mat4 m, vec3 s);
CGLM_EXPORT
void
glmc_decompose_rs(mat4 m, mat4 r, vec3 s);
CGLM_EXPORT
void
glmc_decompose(mat4 m, vec4 t, mat4 r, vec3 s);
#endif /* cglmc_affine_h */

48
include/call/cglmc-cam.h Normal file
View File

@@ -0,0 +1,48 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglmc_cam_h
#define cglmc_cam_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_frustum(float left,
float right,
float bottom,
float top,
float nearVal,
float farVal,
mat4 dest);
CGLM_EXPORT
void
glmc_ortho(float left,
float right,
float bottom,
float top,
float nearVal,
float farVal,
mat4 dest);
CGLM_EXPORT
void
glmc_perspective(float fovy,
float aspect,
float nearVal,
float farVal,
mat4 dest);
CGLM_EXPORT
void
glmc_lookat(vec3 eye,
vec3 center,
vec3 up,
mat4 dest);
#endif /* cglmc_cam_h */

View File

@@ -0,0 +1,45 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef glmc_euler_h
#define glmc_euler_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_euler_angles(mat4 m, vec3 dest);
CGLM_EXPORT
void
glmc_euler(vec3 angles, mat4 dest);
CGLM_EXPORT
void
glmc_euler_zyx(vec3 angles, mat4 dest);
CGLM_EXPORT
void
glmc_euler_zxy(vec3 angles, mat4 dest);
CGLM_EXPORT
void
glmc_euler_xzy(vec3 angles, mat4 dest);
CGLM_EXPORT
void
glmc_euler_yzx(vec3 angles, mat4 dest);
CGLM_EXPORT
void
glmc_euler_yxz(vec3 angles, mat4 dest);
CGLM_EXPORT
void
glmc_euler_by_order(vec3 angles, glm_euler_sq axis, mat4 dest);
#endif /* glmc_euler_h */

38
include/call/cglmc-io.h Normal file
View File

@@ -0,0 +1,38 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglmc_io_h
#define cglmc_io_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_mat4_print(mat4 matrix,
FILE * __restrict ostream);
CGLM_EXPORT
void
glmc_mat3_print(mat3 matrix,
FILE * __restrict ostream);
CGLM_EXPORT
void
glmc_vec4_print(vec4 vec,
FILE * __restrict ostream);
CGLM_EXPORT
void
glmc_vec3_print(vec3 vec,
FILE * __restrict ostream);
CGLM_EXPORT
void
glmc_versor_print(versor vec,
FILE * __restrict ostream);
#endif /* cglmc_io_h */

81
include/call/cglmc-mat.h Normal file
View File

@@ -0,0 +1,81 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglmc_mat_h
#define cglmc_mat_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_mat4_udup(mat4 mat, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_dup(mat4 mat, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_pick3(mat4 mat, mat3 dest);
CGLM_EXPORT
void
glmc_mat4_pick3t(mat4 mat, mat3 dest);
CGLM_EXPORT
void
glmc_mat4_ins3(mat3 mat, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_mul(mat4 m1, mat4 m2, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_mulN(mat4 * __restrict matrices[], int len, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_mulv(mat4 m, vec4 v, vec4 dest);
CGLM_EXPORT
void
glmc_mat4_transpose_to(mat4 m, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_transpose(mat4 m);
CGLM_EXPORT
void
glmc_mat4_scale_p(mat4 m, float s);
CGLM_EXPORT
void
glmc_mat4_scale(mat4 m, float s);
CGLM_EXPORT
float
glmc_mat4_det(mat4 mat);
CGLM_EXPORT
void
glmc_mat4_inv(mat4 mat, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_inv_precise(mat4 mat, mat4 dest);
CGLM_EXPORT
void
glmc_mat4_swap_col(mat4 mat, int col1, int col2);
CGLM_EXPORT
void
glmc_mat4_swap_row(mat4 mat, int row1, int row2);
#endif /* cglmc_mat_h */

53
include/call/cglmc-mat3.h Normal file
View File

@@ -0,0 +1,53 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglmc_mat3_h
#define cglmc_mat3_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_mat3_dup(mat3 mat, mat3 dest);
CGLM_EXPORT
void
glmc_mat3_mul(mat3 m1, mat3 m2, mat3 dest);
CGLM_EXPORT
void
glmc_mat3_transpose_to(mat3 m, mat3 dest);
CGLM_EXPORT
void
glmc_mat3_transpose(mat3 m);
CGLM_EXPORT
void
glmc_mat3_mulv(mat3 m, vec3 v, vec3 dest);
CGLM_EXPORT
void
glmc_mat3_scale(mat3 m, float s);
CGLM_EXPORT
float
glmc_mat3_det(mat3 mat);
CGLM_EXPORT
void
glmc_mat3_inv(mat3 mat, mat3 dest);
CGLM_EXPORT
void
glmc_mat3_swap_col(mat3 mat, int col1, int col2);
CGLM_EXPORT
void
glmc_mat3_swap_row(mat3 mat, int row1, int row2);
#endif /* cglmc_mat3_h */

48
include/call/cglmc-quat.h Normal file
View File

@@ -0,0 +1,48 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglmc_quat_h
#define cglmc_quat_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_quat_init(versor q,
float angle,
float x,
float y,
float z);
CGLM_EXPORT
float
glmc_quat_norm(versor q);
CGLM_EXPORT
void
glmc_quat_normalize(versor q);
CGLM_EXPORT
float
glmc_quat_dot(versor q, versor r);
CGLM_EXPORT
void
glmc_quat_mulv(versor q1, versor q2, versor dest);
CGLM_EXPORT
void
glmc_quat_mat4(versor q, mat4 dest);
CGLM_EXPORT
void
glmc_quat_slerp(versor q,
versor r,
float t,
versor dest);
#endif /* cglmc_quat_h */

93
include/call/cglmc-vec.h Normal file
View File

@@ -0,0 +1,93 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglm_vec_h
#define cglm_vec_h
#include "../cglm.h"
CGLM_EXPORT
void
glmc_vec_dup(vec3 a, vec3 dest);
CGLM_EXPORT
void
glmc_vec4_dup3(vec4 a, vec3 dest);
CGLM_EXPORT
void
glmc_vec4_dup(vec4 v, vec4 dest);
CGLM_EXPORT
float
glmc_vec_dot(vec3 a, vec3 b);
CGLM_EXPORT
float
glmc_vec4_dot(vec4 a, vec4 b);
CGLM_EXPORT
void
glmc_vec_cross(vec3 a, vec3 b, vec3 d);
CGLM_EXPORT
float
glmc_vec_norm(vec3 vec);
CGLM_EXPORT
float
glmc_vec4_norm(vec4 vec);
CGLM_EXPORT
void
glmc_vec_normalize_to(vec3 vec, vec3 dest);
CGLM_EXPORT
void
glmc_vec4_normalize_to(vec4 vec, vec4 dest);
CGLM_EXPORT
void
glmc_vec_normalize(vec3 v);
CGLM_EXPORT
void
glmc_vec4_normalize(vec4 v);
CGLM_EXPORT
void
glmc_vec_add(vec3 v1, vec3 v2, vec3 dest);
CGLM_EXPORT
void
glmc_vec4_add(vec4 v1, vec4 v2, vec4 dest);
CGLM_EXPORT
void
glmc_vec_sub(vec3 v1, vec3 v2, vec3 dest);
CGLM_EXPORT
void
glmc_vec4_sub(vec4 v1, vec4 v2, vec4 dest);
CGLM_EXPORT
void
glmc_vec_scale(vec3 v, float s, vec3 dest);
CGLM_EXPORT
void
glmc_vec_flipsign(vec3 v);
CGLM_EXPORT
void
glmc_vec4_flipsign(vec4 v);
CGLM_EXPORT
void
glmc_vec4_scale(vec4 v, float s, vec4 dest);
#endif /* cglm_vec_h */

21
include/cglm-call.h Normal file
View File

@@ -0,0 +1,21 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#ifndef cglm_call_h
#define cglm_call_h
#include "cglm.h"
#include "call/cglmc-vec.h"
#include "call/cglmc-mat.h"
#include "call/cglmc-mat3.h"
#include "call/cglmc-affine.h"
#include "call/cglmc-cam.h"
#include "call/cglmc-quat.h"
#include "call/cglmc-euler.h"
#include "call/cglmc-io.h"
#endif /* cglm_call_h */

View File

@@ -14,8 +14,14 @@
#include <math.h> #include <math.h>
#if defined(_WIN32) #if defined(_WIN32)
# ifdef CGLM_DLL
# define CGLM_EXPORT __declspec(dllexport)
# else
# define CGLM_EXPORT __declspec(dllimport)
# endif
# define CGLM_INLINE __forceinline # define CGLM_INLINE __forceinline
#else #else
# define CGLM_EXPORT __attribute__((visibility("default")))
# define CGLM_INLINE static inline __attribute((always_inline)) # define CGLM_INLINE static inline __attribute((always_inline))
#endif #endif

61
makefile.am Normal file
View File

@@ -0,0 +1,61 @@
#******************************************************************************
# Copyright (c), Recep Aslantas. *
# *
# MIT License (MIT), http://opensource.org/licenses/MIT *
# Full license can be found in the LICENSE file *
# *
#******************************************************************************
ACLOCAL_AMFLAGS = -I m4
AM_CFLAGS = -Wall \
-std=gnu99 \
-O3 \
-Wstrict-aliasing=2 \
-fstrict-aliasing \
-Wpedantic
lib_LTLIBRARIES = libcglm.la
libcglm_la_LDFLAGS = -no-undefined -version-info 0:1:0
nobase_include_HEADERS = include/cglm.h \
include/cglm-call.h \
include/cglm-cam.h \
include/cglm-io.h \
include/cglm-mat3.h \
include/cglm-types.h \
include/cglm-common.h \
include/cglm-affine.h \
include/cglm-vec.h \
include/cglm-euler.h \
include/cglm-util.h \
include/cglm-quat.h \
include/cglm-mat.h \
include/cglm-affine-mat.h \
include/cglm-platform.h \
include/cglm-mat-simd-avx.h \
include/cglm-affine-mat-avx.h \
include/cglm-opengl.h \
include/cglm-quat-simd.h \
include/cglm-affine-mat-sse2.h \
include/cglm-mat3-simd-sse2.h \
include/cglm-mat-simd-sse2.h \
include/cglm-intrin.h \
include/call/cglmc-euler.h \
include/call/cglmc-quat.h \
include/call/cglmc-cam.h \
include/call/cglmc-io.h \
include/call/cglmc-affine.h \
include/call/cglmc-vec.h \
include/call/cglmc-mat3.h \
include/call/cglmc-mat.h
libcglm_la_SOURCES=\
src/cglm-euler.c \
src/clgm-affine.c \
src/cglm-io.c \
src/cglm-quat.c \
src/cglm-cam.c \
src/cglm-vec.c \
src/cglm-mat3.c \
src/cglm-mat.c

67
src/cglm-cam.c Normal file
View File

@@ -0,0 +1,67 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_frustum(float left,
float right,
float bottom,
float top,
float nearVal,
float farVal,
mat4 dest) {
glm_frustum(left,
right,
bottom,
top,
nearVal,
farVal,
dest);
}
CGLM_EXPORT
void
glmc_ortho(float left,
float right,
float bottom,
float top,
float nearVal,
float farVal,
mat4 dest) {
glm_ortho(left,
right,
bottom,
top,
nearVal,
farVal,
dest);
}
CGLM_EXPORT
void
glmc_perspective(float fovy,
float aspect,
float nearVal,
float farVal,
mat4 dest) {
glm_perspective(fovy,
aspect,
nearVal,
farVal,
dest);
}
CGLM_EXPORT
void
glmc_lookat(vec3 eye,
vec3 center,
vec3 up,
mat4 dest) {
glm_lookat(eye, center, up, dest);
}

56
src/cglm-euler.c Normal file
View File

@@ -0,0 +1,56 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_euler_angles(mat4 m, vec3 dest) {
glm_euler_angles(m, dest);
}
CGLM_EXPORT
void
glmc_euler(vec3 angles, mat4 dest) {
glm_euler(angles, dest);
}
CGLM_EXPORT
void
glmc_euler_zyx(vec3 angles, mat4 dest) {
glm_euler_zyx(angles, dest);
}
CGLM_EXPORT
void
glmc_euler_zxy(vec3 angles, mat4 dest) {
glm_euler_zxy(angles, dest);
}
CGLM_EXPORT
void
glmc_euler_xzy(vec3 angles, mat4 dest) {
glm_euler_xzy(angles, dest);
}
CGLM_EXPORT
void
glmc_euler_yzx(vec3 angles, mat4 dest) {
glm_euler_yzx(angles, dest);
}
CGLM_EXPORT
void
glmc_euler_yxz(vec3 angles, mat4 dest) {
glm_euler_yxz(angles, dest);
}
CGLM_EXPORT
void
glmc_euler_by_order(vec3 angles, glm_euler_sq axis, mat4 dest) {
glm_euler_by_order(angles, axis, dest);
}

43
src/cglm-io.c Normal file
View File

@@ -0,0 +1,43 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_mat4_print(mat4 matrix,
FILE * __restrict ostream) {
glm_mat4_print(matrix, ostream);
}
CGLM_EXPORT
void
glmc_mat3_print(mat3 matrix,
FILE * __restrict ostream) {
glm_mat3_print(matrix, ostream);
}
CGLM_EXPORT
void
glmc_vec4_print(vec4 vec,
FILE * __restrict ostream) {
glm_vec4_print(vec, ostream);
}
CGLM_EXPORT
void
glmc_vec3_print(vec3 vec,
FILE * __restrict ostream) {
glm_vec3_print(vec, ostream);
}
CGLM_EXPORT
void
glmc_versor_print(versor vec,
FILE * __restrict ostream) {
glm_versor_print(vec, ostream);
}

110
src/cglm-mat.c Normal file
View File

@@ -0,0 +1,110 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_mat4_udup(mat4 mat, mat4 dest) {
glm_mat4_dup(mat, dest);
}
CGLM_EXPORT
void
glmc_mat4_dup(mat4 mat, mat4 dest) {
glm_mat4_dup(mat, dest);
}
CGLM_EXPORT
void
glmc_mat4_pick3(mat4 mat, mat3 dest) {
glm_mat4_pick3(mat, dest);
}
CGLM_EXPORT
void
glmc_mat4_pick3t(mat4 mat, mat3 dest) {
glm_mat4_pick3t(mat, dest);
}
CGLM_EXPORT
void
glmc_mat4_ins3(mat3 mat, mat4 dest) {
glm_mat4_ins3(mat, dest);
}
CGLM_EXPORT
void
glmc_mat4_mul(mat4 m1, mat4 m2, mat4 dest) {
glm_mat4_mul(m1, m2, dest);
}
CGLM_EXPORT
void
glmc_mat4_mulN(mat4 * __restrict matrices[], int len, mat4 dest) {
glm_mat4_mulN(matrices, len, dest);
}
CGLM_EXPORT
void
glmc_mat4_mulv(mat4 m, vec4 v, vec4 dest) {
glm_mat4_mulv(m, v, dest);
}
CGLM_EXPORT
void
glmc_mat4_transpose_to(mat4 m, mat4 dest) {
glm_mat4_transpose_to(m, dest);
}
CGLM_EXPORT
void
glmc_mat4_transpose(mat4 m) {
glm_mat4_transpose(m);
}
CGLM_EXPORT
void
glmc_mat4_scale_p(mat4 m, float s) {
glm_mat4_scale_p(m, s);
}
CGLM_EXPORT
void
glmc_mat4_scale(mat4 m, float s) {
glm_mat4_scale(m, s);
}
CGLM_EXPORT
float
glmc_mat4_det(mat4 mat) {
return glm_mat4_det(mat);
}
CGLM_EXPORT
void
glmc_mat4_inv(mat4 mat, mat4 dest) {
glm_mat4_inv(mat, dest);
}
CGLM_EXPORT
void
glmc_mat4_inv_precise(mat4 mat, mat4 dest) {
glm_mat4_inv_precise(mat, dest);
}
CGLM_EXPORT
void
glmc_mat4_swap_col(mat4 mat, int col1, int col2) {
glm_mat4_swap_col(mat, col1, col2);
}
CGLM_EXPORT
void
glmc_mat4_swap_row(mat4 mat, int row1, int row2) {
glm_mat4_swap_row(mat, row1, row2);
}

68
src/cglm-mat3.c Normal file
View File

@@ -0,0 +1,68 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_mat3_dup(mat3 mat, mat3 dest) {
glm_mat3_dup(mat, dest);
}
CGLM_EXPORT
void
glmc_mat3_mul(mat3 m1, mat3 m2, mat3 dest) {
glm_mat3_mul(m1, m2, dest);
}
CGLM_EXPORT
void
glmc_mat3_transpose_to(mat3 m, mat3 dest) {
glm_mat3_transpose_to(m, dest);
}
CGLM_EXPORT
void
glmc_mat3_transpose(mat3 m) {
glm_mat3_transpose(m);
}
CGLM_EXPORT
void
glmc_mat3_mulv(mat3 m, vec3 v, vec3 dest) {
glm_mat3_mulv(m, v, dest);
}
CGLM_EXPORT
void
glmc_mat3_scale(mat3 m, float s) {
glm_mat3_scale(m, s);
}
CGLM_EXPORT
float
glmc_mat3_det(mat3 mat) {
return glm_mat3_det(mat);
}
CGLM_EXPORT
void
glmc_mat3_inv(mat3 mat, mat3 dest) {
glm_mat3_inv(mat, dest);
}
CGLM_EXPORT
void
glmc_mat3_swap_col(mat3 mat, int col1, int col2) {
glm_mat3_swap_col(mat, col1, col2);
}
CGLM_EXPORT
void
glmc_mat3_swap_row(mat3 mat, int row1, int row2) {
glm_mat3_swap_row(mat, row1, row2);
}

57
src/cglm-quat.c Normal file
View File

@@ -0,0 +1,57 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_quat_init(versor q,
float angle,
float x,
float y,
float z) {
glm_quat_init(q, angle, x, y, z);
}
CGLM_EXPORT
float
glmc_quat_norm(versor q) {
return glm_quat_norm(q);
}
CGLM_EXPORT
void
glmc_quat_normalize(versor q) {
glm_quat_normalize(q);
}
CGLM_EXPORT
float
glmc_quat_dot(versor q, versor r) {
return glm_quat_dot(q, r);
}
CGLM_EXPORT
void
glmc_quat_mulv(versor q1, versor q2, versor dest) {
glm_quat_mulv(q1, q2, dest);
}
CGLM_EXPORT
void
glmc_quat_mat4(versor q, mat4 dest) {
glm_quat_mat4(q, dest);
}
CGLM_EXPORT
void
glmc_quat_slerp(versor q,
versor r,
float t,
versor dest) {
glm_quat_slerp(q, r, t, dest);
}

128
src/cglm-vec.c Normal file
View File

@@ -0,0 +1,128 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_vec_dup(vec3 a, vec3 dest) {
glm_vec_dup(a, dest);
}
CGLM_EXPORT
void
glmc_vec4_dup3(vec4 a, vec3 dest) {
glm_vec4_dup3(a, dest);
}
CGLM_EXPORT
void
glmc_vec4_dup(vec4 v, vec4 dest) {
glm_vec4_dup(v, dest);
}
CGLM_EXPORT
float
glmc_vec_dot(vec3 a, vec3 b) {
return glm_vec_dot(a, b);
}
CGLM_EXPORT
float
glmc_vec4_dot(vec4 a, vec4 b) {
return glm_vec4_dot(a, b);
}
CGLM_EXPORT
void
glmc_vec_cross(vec3 a, vec3 b, vec3 d) {
glm_vec_cross(a, b, d);
}
CGLM_EXPORT
float
glmc_vec_norm(vec3 vec) {
return glm_vec_norm(vec);
}
CGLM_EXPORT
float
glmc_vec4_norm(vec4 vec) {
return glm_vec4_norm(vec);
}
CGLM_EXPORT
void
glmc_vec_normalize_to(vec3 vec, vec3 dest) {
glm_vec_normalize_to(vec, dest);
}
CGLM_EXPORT
void
glmc_vec4_normalize_to(vec4 vec, vec4 dest) {
glm_vec4_normalize_to(vec, dest);
}
CGLM_EXPORT
void
glmc_vec_normalize(vec3 v) {
glm_vec_normalize(v);
}
CGLM_EXPORT
void
glmc_vec4_normalize(vec4 v) {
glm_vec4_normalize(v);
}
CGLM_EXPORT
void
glmc_vec_add(vec3 v1, vec3 v2, vec3 dest) {
glm_vec_add(v1, v2, dest);
}
CGLM_EXPORT
void
glmc_vec4_add(vec4 v1, vec4 v2, vec4 dest) {
glm_vec4_add(v1, v2, dest);
}
CGLM_EXPORT
void
glmc_vec_sub(vec3 v1, vec3 v2, vec3 dest) {
glm_vec_sub(v1, v2, dest);
}
CGLM_EXPORT
void
glmc_vec4_sub(vec4 v1, vec4 v2, vec4 dest) {
glm_vec4_sub(v1, v2, dest);
}
CGLM_EXPORT
void
glmc_vec_scale(vec3 v, float s, vec3 dest) {
glm_vec_scale(v, s, dest);
}
CGLM_EXPORT
void
glmc_vec_flipsign(vec3 v) {
glm_vec_flipsign(v);
}
CGLM_EXPORT
void
glmc_vec4_flipsign(vec4 v) {
glm_vec4_flipsign(v);
}
CGLM_EXPORT
void
glmc_vec4_scale(vec4 v, float s, vec4 dest) {
glm_vec4_scale(v, s, dest);
}

116
src/clgm-affine.c Normal file
View File

@@ -0,0 +1,116 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
#include "../include/cglm.h"
CGLM_EXPORT
void
glmc_translate_to(mat4 m, vec3 v, mat4 dest) {
glm_translate_to(m, v, dest);
}
CGLM_EXPORT
void
glmc_translate(mat4 m, vec3 v) {
glm_translate(m, v);
}
CGLM_EXPORT
void
glmc_translate_x(mat4 m, float to) {
glm_translate_x(m, to);
}
CGLM_EXPORT
void
glmc_translate_y(mat4 m, float to) {
glm_translate_y(m, to);
}
CGLM_EXPORT
void
glmc_translate_z(mat4 m, float to) {
glm_translate_z(m, to);
}
CGLM_EXPORT
void
glmc_scale_to(mat4 m, vec3 v, mat4 dest) {
glm_scale_to(m, v, dest);
}
CGLM_EXPORT
void
glmc_scale(mat4 m, vec3 v) {
glm_scale(m, v);
}
CGLM_EXPORT
void
glmc_scale1(mat4 m, float s) {
glm_scale1(m, s);
}
CGLM_EXPORT
void
glmc_rotate_x(mat4 m, float rad, mat4 dest) {
glm_rotate_x(m, rad, dest);
}
CGLM_EXPORT
void
glmc_rotate_y(mat4 m, float rad, mat4 dest) {
glm_rotate_y(m, rad, dest);
}
CGLM_EXPORT
void
glmc_rotate_z(mat4 m, float rad, mat4 dest) {
glm_rotate_z(m, rad, dest);
}
CGLM_EXPORT
void
glmc_rotate_ndc_make(mat4 m, float angle, vec3 axis_ndc) {
glm_rotate_ndc_make(m, angle, axis_ndc);
}
CGLM_EXPORT
void
glmc_rotate_make(mat4 m, float angle, vec3 axis) {
glm_rotate_make(m, angle, axis);
}
CGLM_EXPORT
void
glmc_rotate_ndc(mat4 m, float angle, vec3 axis_ndc) {
glm_rotate_ndc(m, angle, axis_ndc);
}
CGLM_EXPORT
void
glmc_rotate(mat4 m, float angle, vec3 axis) {
glm_rotate(m, angle, axis);
}
CGLM_EXPORT
void
glmc_decompose_scalev(mat4 m, vec3 s) {
glm_decompose_scalev(m, s);
}
CGLM_EXPORT
void
glmc_decompose_rs(mat4 m, mat4 r, vec3 s) {
glm_decompose_rs(m, r, s);
}
CGLM_EXPORT
void
glmc_decompose(mat4 m, vec4 t, mat4 r, vec3 s) {
glm_decompose(m, t, r, s);
}