diff options
Diffstat (limited to 'kmscube')
| -rw-r--r-- | kmscube/cube-egl.cpp | 5 | ||||
| -rw-r--r-- | kmscube/cube-egl.h | 4 | ||||
| -rw-r--r-- | kmscube/cube-gbm.cpp | 20 | ||||
| -rw-r--r-- | kmscube/cube-gles2.cpp | 119 | ||||
| -rw-r--r-- | kmscube/cube-null.cpp | 4 | ||||
| -rw-r--r-- | kmscube/cube-wl.cpp | 32 | ||||
| -rw-r--r-- | kmscube/cube-x11.cpp | 54 | ||||
| -rw-r--r-- | kmscube/cube.cpp | 23 | ||||
| -rw-r--r-- | kmscube/cube.h | 1 | ||||
| -rw-r--r-- | kmscube/esTransform.cpp | 110 | ||||
| -rw-r--r-- | kmscube/esTransform.h | 18 | 
11 files changed, 183 insertions, 207 deletions
| diff --git a/kmscube/cube-egl.cpp b/kmscube/cube-egl.cpp index 81b3107..5f23c4e 100644 --- a/kmscube/cube-egl.cpp +++ b/kmscube/cube-egl.cpp @@ -22,7 +22,7 @@ static void print_egl_config(EGLDisplay dpy, EGLConfig cfg)  	       getconf(EGL_NATIVE_VISUAL_TYPE));  } -EglState::EglState(void *native_display) +EglState::EglState(void* native_display)  {  	EGLBoolean b;  	EGLint major, minor, n; @@ -60,7 +60,6 @@ EglState::EglState(void *native_display)  	b = eglBindAPI(EGL_OPENGL_ES_API);  	FAIL_IF(!b, "failed to bind api EGL_OPENGL_ES_API"); -  	if (s_verbose) {  		EGLint numConfigs;  		b = eglGetConfigs(m_display, nullptr, 0, &numConfigs); @@ -96,7 +95,7 @@ EglState::~EglState()  	eglTerminate(m_display);  } -EglSurface::EglSurface(const EglState &egl, void *native_window) +EglSurface::EglSurface(const EglState& egl, void* native_window)  	: egl(egl)  {  	esurface = eglCreateWindowSurface(egl.display(), egl.config(), (EGLNativeWindowType)native_window, NULL); diff --git a/kmscube/cube-egl.h b/kmscube/cube-egl.h index a7de103..f492d07 100644 --- a/kmscube/cube-egl.h +++ b/kmscube/cube-egl.h @@ -5,7 +5,7 @@  class EglState  {  public: -	EglState(void *native_display); +	EglState(void* native_display);  	~EglState();  	EGLDisplay display() const { return m_display; } @@ -21,7 +21,7 @@ private:  class EglSurface  {  public: -	EglSurface(const EglState& egl, void *native_window); +	EglSurface(const EglState& egl, void* native_window);  	~EglSurface();  	void make_current(); diff --git a/kmscube/cube-gbm.cpp b/kmscube/cube-gbm.cpp index e239a0c..d998f0b 100644 --- a/kmscube/cube-gbm.cpp +++ b/kmscube/cube-gbm.cpp @@ -74,7 +74,7 @@ public:  		return gbm_surface_lock_front_buffer(m_surface);  	} -	void release_buffer(gbm_bo *bo) +	void release_buffer(gbm_bo* bo)  	{  		gbm_surface_release_buffer(m_surface, bo);  	} @@ -116,13 +116,13 @@ public:  		eglSwapBuffers(egl.display(), esurface);  	} -	static void drm_fb_destroy_callback(struct gbm_bo *bo, void *data) +	static void drm_fb_destroy_callback(struct gbm_bo* bo, void* data)  	{  		auto fb = reinterpret_cast<Framebuffer*>(data);  		delete fb;  	} -	static Framebuffer* drm_fb_get_from_bo(struct gbm_bo *bo, Card& card) +	static Framebuffer* drm_fb_get_from_bo(struct gbm_bo* bo, Card& card)  	{  		auto fb = reinterpret_cast<Framebuffer*>(gbm_bo_get_user_data(bo));  		if (fb) @@ -134,9 +134,9 @@ public:  		uint32_t handle = gbm_bo_get_handle(bo).u32;  		PixelFormat format = (PixelFormat)gbm_bo_get_format(bo); -		vector<uint32_t> handles { handle }; -		vector<uint32_t> strides { stride }; -		vector<uint32_t> offsets { 0 }; +		vector<uint32_t> handles{ handle }; +		vector<uint32_t> strides{ stride }; +		vector<uint32_t> offsets{ 0 };  		fb = new ExtFramebuffer(card, width, height, format, handles, strides, offsets); @@ -237,7 +237,7 @@ private:  	{  		++m_frame_num; -		if (m_frame_num  % 100 == 0) { +		if (m_frame_num % 100 == 0) {  			auto t2 = chrono::steady_clock::now();  			chrono::duration<float> fsec = t2 - m_t1;  			printf("fps: %f\n", 100.0 / fsec.count()); @@ -351,11 +351,11 @@ void main_gbm()  	for (auto& out : outputs)  		out->start_flipping(); -	struct pollfd fds[2] = { }; +	struct pollfd fds[2] = {};  	fds[0].fd = 0; -	fds[0].events =  POLLIN; +	fds[0].events = POLLIN;  	fds[1].fd = card.fd(); -	fds[1].events =  POLLIN; +	fds[1].events = POLLIN;  	while (!s_need_exit || s_flip_pending) {  		int r = poll(fds, ARRAY_SIZE(fds), -1); diff --git a/kmscube/cube-gles2.cpp b/kmscube/cube-gles2.cpp index 05567ea..854c90e 100644 --- a/kmscube/cube-gles2.cpp +++ b/kmscube/cube-gles2.cpp @@ -41,40 +41,40 @@ GlScene::GlScene()  		-1.0f, -1.0f, -1.0f, // point black  		+1.0f, -1.0f, -1.0f, // point red  		-1.0f, -1.0f, +1.0f, // point blue -		+1.0f, -1.0f, +1.0f  // point magenta +		+1.0f, -1.0f, +1.0f // point magenta  	};  	static const GLfloat vColors[] = {  		// front -		0.0f,  0.0f,  1.0f, // blue -		1.0f,  0.0f,  1.0f, // magenta -		0.0f,  1.0f,  1.0f, // cyan -		1.0f,  1.0f,  1.0f, // white +		0.0f, 0.0f, 1.0f, // blue +		1.0f, 0.0f, 1.0f, // magenta +		0.0f, 1.0f, 1.0f, // cyan +		1.0f, 1.0f, 1.0f, // white  		// back -		1.0f,  0.0f,  0.0f, // red -		0.0f,  0.0f,  0.0f, // black -		1.0f,  1.0f,  0.0f, // yellow -		0.0f,  1.0f,  0.0f, // green +		1.0f, 0.0f, 0.0f, // red +		0.0f, 0.0f, 0.0f, // black +		1.0f, 1.0f, 0.0f, // yellow +		0.0f, 1.0f, 0.0f, // green  		// right -		1.0f,  0.0f,  1.0f, // magenta -		1.0f,  0.0f,  0.0f, // red -		1.0f,  1.0f,  1.0f, // white -		1.0f,  1.0f,  0.0f, // yellow +		1.0f, 0.0f, 1.0f, // magenta +		1.0f, 0.0f, 0.0f, // red +		1.0f, 1.0f, 1.0f, // white +		1.0f, 1.0f, 0.0f, // yellow  		// left -		0.0f,  0.0f,  0.0f, // black -		0.0f,  0.0f,  1.0f, // blue -		0.0f,  1.0f,  0.0f, // green -		0.0f,  1.0f,  1.0f, // cyan +		0.0f, 0.0f, 0.0f, // black +		0.0f, 0.0f, 1.0f, // blue +		0.0f, 1.0f, 0.0f, // green +		0.0f, 1.0f, 1.0f, // cyan  		// top -		0.0f,  1.0f,  1.0f, // cyan -		1.0f,  1.0f,  1.0f, // white -		0.0f,  1.0f,  0.0f, // green -		1.0f,  1.0f,  0.0f, // yellow +		0.0f, 1.0f, 1.0f, // cyan +		1.0f, 1.0f, 1.0f, // white +		0.0f, 1.0f, 0.0f, // green +		1.0f, 1.0f, 0.0f, // yellow  		// bottom -		0.0f,  0.0f,  0.0f, // black -		1.0f,  0.0f,  0.0f, // red -		0.0f,  0.0f,  1.0f, // blue -		1.0f,  0.0f,  1.0f  // magenta +		0.0f, 0.0f, 0.0f, // black +		1.0f, 0.0f, 0.0f, // red +		0.0f, 0.0f, 1.0f, // blue +		1.0f, 0.0f, 1.0f // magenta  	};  	static const GLfloat vNormals[] = { @@ -107,43 +107,42 @@ GlScene::GlScene()  		+0.0f, -1.0f, +0.0f, // down  		+0.0f, -1.0f, +0.0f, // down  		+0.0f, -1.0f, +0.0f, // down -		+0.0f, -1.0f, +0.0f  // down +		+0.0f, -1.0f, +0.0f // down  	}; -	static const char *vertex_shader_source = -			"uniform mat4 modelviewMatrix;      \n" -			"uniform mat4 modelviewprojectionMatrix;\n" -			"uniform mat3 normalMatrix;         \n" -			"                                   \n" -			"attribute vec4 in_position;        \n" -			"attribute vec3 in_normal;          \n" -			"attribute vec4 in_color;           \n" -			"\n" -			"vec4 lightSource = vec4(2.0, 2.0, 20.0, 0.0);\n" -			"                                   \n" -			"varying vec4 vVaryingColor;        \n" -			"                                   \n" -			"void main()                        \n" -			"{                                  \n" -			"    gl_Position = modelviewprojectionMatrix * in_position;\n" -			"    vec3 vEyeNormal = normalMatrix * in_normal;\n" -			"    vec4 vPosition4 = modelviewMatrix * in_position;\n" -			"    vec3 vPosition3 = vPosition4.xyz / vPosition4.w;\n" -			"    vec3 vLightDir = normalize(lightSource.xyz - vPosition3);\n" -			"    float diff = max(0.0, dot(vEyeNormal, vLightDir));\n" -			"    vVaryingColor = vec4(diff * in_color.rgb, 1.0);\n" -			"}                                  \n"; - -	static const char *fragment_shader_source = -			"precision mediump float;           \n" -			"                                   \n" -			"varying vec4 vVaryingColor;        \n" -			"                                   \n" -			"void main()                        \n" -			"{                                  \n" -			"    gl_FragColor = vVaryingColor;  \n" -			"}                                  \n"; - +	static const char* vertex_shader_source = +		"uniform mat4 modelviewMatrix;      \n" +		"uniform mat4 modelviewprojectionMatrix;\n" +		"uniform mat3 normalMatrix;         \n" +		"                                   \n" +		"attribute vec4 in_position;        \n" +		"attribute vec3 in_normal;          \n" +		"attribute vec4 in_color;           \n" +		"\n" +		"vec4 lightSource = vec4(2.0, 2.0, 20.0, 0.0);\n" +		"                                   \n" +		"varying vec4 vVaryingColor;        \n" +		"                                   \n" +		"void main()                        \n" +		"{                                  \n" +		"    gl_Position = modelviewprojectionMatrix * in_position;\n" +		"    vec3 vEyeNormal = normalMatrix * in_normal;\n" +		"    vec4 vPosition4 = modelviewMatrix * in_position;\n" +		"    vec3 vPosition3 = vPosition4.xyz / vPosition4.w;\n" +		"    vec3 vLightDir = normalize(lightSource.xyz - vPosition3);\n" +		"    float diff = max(0.0, dot(vEyeNormal, vLightDir));\n" +		"    vVaryingColor = vec4(diff * in_color.rgb, 1.0);\n" +		"}                                  \n"; + +	static const char* fragment_shader_source = +		"precision mediump float;           \n" +		"                                   \n" +		"varying vec4 vVaryingColor;        \n" +		"                                   \n" +		"void main()                        \n" +		"{                                  \n" +		"    gl_FragColor = vVaryingColor;  \n" +		"}                                  \n";  	if (s_verbose) {  		printf("GL_VENDOR:       %s\n", glGetString(GL_VENDOR)); diff --git a/kmscube/cube-null.cpp b/kmscube/cube-null.cpp index f8f2091..1fba1db 100644 --- a/kmscube/cube-null.cpp +++ b/kmscube/cube-null.cpp @@ -18,9 +18,9 @@ void main_null()  	int framenum = 0; -	struct pollfd fds[1] = { }; +	struct pollfd fds[1] = {};  	fds[0].fd = 0; -	fds[0].events =  POLLIN; +	fds[0].events = POLLIN;  	while (true) {  		int r = poll(fds, ARRAY_SIZE(fds), 0); diff --git a/kmscube/cube-wl.cpp b/kmscube/cube-wl.cpp index de75f88..136a4ed 100644 --- a/kmscube/cube-wl.cpp +++ b/kmscube/cube-wl.cpp @@ -9,18 +9,18 @@  #include "cube-egl.h"  #include "cube-gles2.h" -static struct wl_compositor *s_compositor = NULL; -static struct wl_shell *s_shell = NULL; +static struct wl_compositor* s_compositor = NULL; +static struct wl_shell* s_shell = NULL;  static char s_running = 1;  struct window { -	struct wl_surface *surface; -	struct wl_shell_surface *shell_surface; -	struct wl_egl_window *egl_window; +	struct wl_surface* surface; +	struct wl_shell_surface* shell_surface; +	struct wl_egl_window* egl_window;  };  // listeners -static void registry_add_object(void *data, struct wl_registry *registry, uint32_t name, const char *interface, uint32_t version) +static void registry_add_object(void* data, struct wl_registry* registry, uint32_t name, const char* interface, uint32_t version)  {  	if (!strcmp(interface, "wl_compositor"))  		s_compositor = (struct wl_compositor*)wl_registry_bind(registry, name, &wl_compositor_interface, 0); @@ -28,35 +28,33 @@ static void registry_add_object(void *data, struct wl_registry *registry, uint32  		s_shell = (struct wl_shell*)wl_registry_bind(registry, name, &wl_shell_interface, 0);  } -static void registry_remove_object(void *data, struct wl_registry *registry, uint32_t name) +static void registry_remove_object(void* data, struct wl_registry* registry, uint32_t name)  { -  }  static struct wl_registry_listener registry_listener = { ®istry_add_object, ®istry_remove_object }; -static void shell_surface_ping(void *data, struct wl_shell_surface *shell_surface, uint32_t serial) +static void shell_surface_ping(void* data, struct wl_shell_surface* shell_surface, uint32_t serial)  {  	wl_shell_surface_pong(shell_surface, serial);  } -static void shell_surface_configure(void *data, struct wl_shell_surface *shell_surface, uint32_t edges, int32_t width, int32_t height) +static void shell_surface_configure(void* data, struct wl_shell_surface* shell_surface, uint32_t edges, int32_t width, int32_t height)  { -	struct window *window = (struct window*)data; +	struct window* window = (struct window*)data;  	wl_egl_window_resize(window->egl_window, width, height, 0, 0);  } -static void shell_surface_popup_done(void *data, struct wl_shell_surface *shell_surface) +static void shell_surface_popup_done(void* data, struct wl_shell_surface* shell_surface)  { -  }  static struct wl_shell_surface_listener shell_surface_listener = {  	&shell_surface_ping, &shell_surface_configure, &shell_surface_popup_done  }; -static void create_window(struct window *window, int32_t width, int32_t height) +static void create_window(struct window* window, int32_t width, int32_t height)  {  	window->surface = wl_compositor_create_surface(s_compositor);  	window->shell_surface = wl_shell_get_shell_surface(s_shell, window->surface); @@ -65,7 +63,7 @@ static void create_window(struct window *window, int32_t width, int32_t height)  	window->egl_window = wl_egl_window_create(window->surface, width, height);  } -static void delete_window(struct window *window) +static void delete_window(struct window* window)  {  	wl_egl_window_destroy(window->egl_window);  	wl_shell_surface_destroy(window->shell_surface); @@ -74,8 +72,8 @@ static void delete_window(struct window *window)  void main_wl()  { -	struct wl_display *display = wl_display_connect(NULL); -	struct wl_registry *registry = wl_display_get_registry(display); +	struct wl_display* display = wl_display_connect(NULL); +	struct wl_registry* registry = wl_display_get_registry(display);  	wl_registry_add_listener(registry, ®istry_listener, NULL);  	wl_display_roundtrip(display); diff --git a/kmscube/cube-x11.cpp b/kmscube/cube-x11.cpp index 47a1d2b..ae018ea 100644 --- a/kmscube/cube-x11.cpp +++ b/kmscube/cube-x11.cpp @@ -10,7 +10,7 @@  using namespace std; -static void main_loop(Display* dpy, xcb_connection_t *c, xcb_window_t window, uint32_t width, uint32_t height) +static void main_loop(Display* dpy, xcb_connection_t* c, xcb_window_t window, uint32_t width, uint32_t height)  {  	EglState egl(dpy);  	EglSurface surface(egl, (void*)(uintptr_t)window); @@ -25,10 +25,9 @@ static void main_loop(Display* dpy, xcb_connection_t *c, xcb_window_t window, ui  	bool need_exit = false; -	xcb_generic_event_t *event; +	xcb_generic_event_t* event;  	while (true) { - -		while ((event = xcb_poll_for_event (c))) { +		while ((event = xcb_poll_for_event(c))) {  			bool handled = false;  			uint8_t response_type = event->response_type & ~0x80; @@ -40,7 +39,7 @@ static void main_loop(Display* dpy, xcb_connection_t *c, xcb_window_t window, ui  			case XCB_KEY_PRESS: {  				handled = true; -				xcb_key_press_event_t *kp = (xcb_key_press_event_t *)event; +				xcb_key_press_event_t* kp = (xcb_key_press_event_t*)event;  				if (kp->detail == 24 || kp->detail == 9) {  					printf("Exit due to keypress\n");  					need_exit = true; @@ -85,14 +84,14 @@ void main_x11()  	Display* dpy = XOpenDisplay(NULL);  	FAIL_IF(!dpy, "Failed to connect to the X server"); -	xcb_connection_t *c = XGetXCBConnection(dpy); +	xcb_connection_t* c = XGetXCBConnection(dpy);  	/* Acquire event queue ownership */  	XSetEventQueueOwner(dpy, XCBOwnsEventQueue);  	/* Get the first screen */ -	const xcb_setup_t      *setup  = xcb_get_setup (c); -	xcb_screen_t           *screen = xcb_setup_roots_iterator (setup).data; +	const xcb_setup_t* setup = xcb_get_setup(c); +	xcb_screen_t* screen = xcb_setup_roots_iterator(setup).data;  	/* Create the window */ @@ -115,23 +114,22 @@ void main_x11()  		XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS,  	}; -	xcb_window_t window = xcb_generate_id (c); -	xcb_create_window (c,                    /* Connection          */ -			   XCB_COPY_FROM_PARENT,          /* depth (same as root)*/ -			   window,                        /* window Id           */ -			   screen->root,                  /* parent window       */ -			   0, 0,                          /* x, y                */ -			   width, height,                 /* width, height       */ -			   0,                             /* border_width        */ -			   XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class               */ -			   screen->root_visual,           /* visual              */ -			   xcb_window_attrib_mask, -			   xcb_window_attrib_list); - -	if (s_fullscreen) -	{ -		const char *net_wm_state = "_NET_WM_STATE"; -		const char *net_wm_state_fullscreen = "_NET_WM_STATE_FULLSCREEN"; +	xcb_window_t window = xcb_generate_id(c); +	xcb_create_window(c, /* Connection          */ +			  XCB_COPY_FROM_PARENT, /* depth (same as root)*/ +			  window, /* window Id           */ +			  screen->root, /* parent window       */ +			  0, 0, /* x, y                */ +			  width, height, /* width, height       */ +			  0, /* border_width        */ +			  XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class               */ +			  screen->root_visual, /* visual              */ +			  xcb_window_attrib_mask, +			  xcb_window_attrib_list); + +	if (s_fullscreen) { +		const char* net_wm_state = "_NET_WM_STATE"; +		const char* net_wm_state_fullscreen = "_NET_WM_STATE_FULLSCREEN";  		xcb_intern_atom_cookie_t cookie = xcb_intern_atom(c, 0, strlen(net_wm_state), net_wm_state);  		xcb_intern_atom_reply_t* reply = xcb_intern_atom_reply(c, cookie, 0); @@ -139,11 +137,11 @@ void main_x11()  		xcb_intern_atom_cookie_t cookie2 = xcb_intern_atom(c, 0, strlen(net_wm_state_fullscreen), net_wm_state_fullscreen);  		xcb_intern_atom_reply_t* reply2 = xcb_intern_atom_reply(c, cookie2, 0); -		xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, reply->atom, XCB_ATOM_ATOM , 32, 1, (void*)&reply2->atom); +		xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, reply->atom, XCB_ATOM_ATOM, 32, 1, (void*)&reply2->atom);  	} -	xcb_map_window (c, window); -	xcb_flush (c); +	xcb_map_window(c, window); +	xcb_flush(c);  	main_loop(dpy, c, window, width, height); diff --git a/kmscube/cube.cpp b/kmscube/cube.cpp index 4129554..406bb8d 100644 --- a/kmscube/cube.cpp +++ b/kmscube/cube.cpp @@ -34,24 +34,21 @@ bool s_verbose;  bool s_fullscreen;  unsigned s_num_frames; -int main(int argc, char *argv[]) +int main(int argc, char* argv[])  {  	OptionSet optionset = {  		Option("v|verbose", -		[&]() -		{ -			s_verbose = true; -		}), +		       [&]() { +			       s_verbose = true; +		       }),  		Option("f|fullscreen", -		[&]() -		{ -			s_fullscreen = true; -		}), +		       [&]() { +			       s_fullscreen = true; +		       }),  		Option("n|numframes=", -		[&](string s) -		{ -			s_num_frames = stoi(s); -		}), +		       [&](string s) { +			       s_num_frames = stoi(s); +		       }),  	};  	optionset.parse(argc, argv); diff --git a/kmscube/cube.h b/kmscube/cube.h index 6368162..18ab0e0 100644 --- a/kmscube/cube.h +++ b/kmscube/cube.h @@ -8,4 +8,3 @@ void main_null();  void main_gbm();  void main_x11();  void main_wl(); - diff --git a/kmscube/esTransform.cpp b/kmscube/esTransform.cpp index 899c038..daa28ac 100644 --- a/kmscube/esTransform.cpp +++ b/kmscube/esTransform.cpp @@ -46,8 +46,7 @@  #define PI 3.1415926535897932384626433832795f -void -esScale(ESMatrix *result, GLfloat sx, GLfloat sy, GLfloat sz) +void esScale(ESMatrix* result, GLfloat sx, GLfloat sy, GLfloat sz)  {  	result->m[0][0] *= sx;  	result->m[0][1] *= sx; @@ -65,8 +64,7 @@ esScale(ESMatrix *result, GLfloat sx, GLfloat sy, GLfloat sz)  	result->m[2][3] *= sz;  } -void -esTranslate(ESMatrix *result, GLfloat tx, GLfloat ty, GLfloat tz) +void esTranslate(ESMatrix* result, GLfloat tx, GLfloat ty, GLfloat tz)  {  	result->m[3][0] += (result->m[0][0] * tx + result->m[1][0] * ty + result->m[2][0] * tz);  	result->m[3][1] += (result->m[0][1] * tx + result->m[1][1] * ty + result->m[2][1] * tz); @@ -74,16 +72,14 @@ esTranslate(ESMatrix *result, GLfloat tx, GLfloat ty, GLfloat tz)  	result->m[3][3] += (result->m[0][3] * tx + result->m[1][3] * ty + result->m[2][3] * tz);  } -void -esRotate(ESMatrix *result, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +void esRotate(ESMatrix* result, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)  {  	GLfloat sinAngle, cosAngle;  	GLfloat mag = sqrtf(x * x + y * y + z * z); -	sinAngle = sinf ( angle * PI / 180.0f ); -	cosAngle = cosf ( angle * PI / 180.0f ); -	if ( mag > 0.0f ) -	{ +	sinAngle = sinf(angle * PI / 180.0f); +	cosAngle = cosf(angle * PI / 180.0f); +	if (mag > 0.0f) {  		GLfloat xx, yy, zz, xy, yz, zx, xs, ys, zs;  		GLfloat oneMinusCos;  		ESMatrix rotMat; @@ -123,20 +119,19 @@ esRotate(ESMatrix *result, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)  		rotMat.m[3][2] = 0.0F;  		rotMat.m[3][3] = 1.0F; -		esMatrixMultiply( result, &rotMat, result ); +		esMatrixMultiply(result, &rotMat, result);  	}  } -void -esFrustum(ESMatrix *result, float left, float right, float bottom, float top, float nearZ, float farZ) +void esFrustum(ESMatrix* result, float left, float right, float bottom, float top, float nearZ, float farZ)  { -	float       deltaX = right - left; -	float       deltaY = top - bottom; -	float       deltaZ = farZ - nearZ; -	ESMatrix    frust; +	float deltaX = right - left; +	float deltaY = top - bottom; +	float deltaZ = farZ - nearZ; +	ESMatrix frust; -	if ( (nearZ <= 0.0f) || (farZ <= 0.0f) || -			(deltaX <= 0.0f) || (deltaY <= 0.0f) || (deltaZ <= 0.0f) ) +	if ((nearZ <= 0.0f) || (farZ <= 0.0f) || +	    (deltaX <= 0.0f) || (deltaY <= 0.0f) || (deltaZ <= 0.0f))  		return;  	frust.m[0][0] = 2.0f * nearZ / deltaX; @@ -156,27 +151,24 @@ esFrustum(ESMatrix *result, float left, float right, float bottom, float top, fl  	esMatrixMultiply(result, &frust, result);  } - -void -esPerspective(ESMatrix *result, float fovy, float aspect, float nearZ, float farZ) +void esPerspective(ESMatrix* result, float fovy, float aspect, float nearZ, float farZ)  {  	GLfloat frustumW, frustumH; -	frustumH = tanf( fovy / 360.0f * PI ) * nearZ; +	frustumH = tanf(fovy / 360.0f * PI) * nearZ;  	frustumW = frustumH * aspect; -	esFrustum( result, -frustumW, frustumW, -frustumH, frustumH, nearZ, farZ ); +	esFrustum(result, -frustumW, frustumW, -frustumH, frustumH, nearZ, farZ);  } -void -esOrtho(ESMatrix *result, float left, float right, float bottom, float top, float nearZ, float farZ) +void esOrtho(ESMatrix* result, float left, float right, float bottom, float top, float nearZ, float farZ)  { -	float       deltaX = right - left; -	float       deltaY = top - bottom; -	float       deltaZ = farZ - nearZ; -	ESMatrix    ortho; +	float deltaX = right - left; +	float deltaY = top - bottom; +	float deltaZ = farZ - nearZ; +	ESMatrix ortho; -	if ( (deltaX == 0.0f) || (deltaY == 0.0f) || (deltaZ == 0.0f) ) +	if ((deltaX == 0.0f) || (deltaY == 0.0f) || (deltaZ == 0.0f))  		return;  	esMatrixLoadIdentity(&ortho); @@ -190,41 +182,36 @@ esOrtho(ESMatrix *result, float left, float right, float bottom, float top, floa  	esMatrixMultiply(result, &ortho, result);  } - -void -esMatrixMultiply(ESMatrix *result, ESMatrix *srcA, ESMatrix *srcB) +void esMatrixMultiply(ESMatrix* result, ESMatrix* srcA, ESMatrix* srcB)  { -	ESMatrix    tmp; -	int         i; - -	for (i=0; i<4; i++) -	{ -		tmp.m[i][0] =	(srcA->m[i][0] * srcB->m[0][0]) + -				(srcA->m[i][1] * srcB->m[1][0]) + -				(srcA->m[i][2] * srcB->m[2][0]) + -				(srcA->m[i][3] * srcB->m[3][0]) ; - -		tmp.m[i][1] =	(srcA->m[i][0] * srcB->m[0][1]) + -				(srcA->m[i][1] * srcB->m[1][1]) + -				(srcA->m[i][2] * srcB->m[2][1]) + -				(srcA->m[i][3] * srcB->m[3][1]) ; - -		tmp.m[i][2] =	(srcA->m[i][0] * srcB->m[0][2]) + -				(srcA->m[i][1] * srcB->m[1][2]) + -				(srcA->m[i][2] * srcB->m[2][2]) + -				(srcA->m[i][3] * srcB->m[3][2]) ; - -		tmp.m[i][3] =	(srcA->m[i][0] * srcB->m[0][3]) + -				(srcA->m[i][1] * srcB->m[1][3]) + -				(srcA->m[i][2] * srcB->m[2][3]) + -				(srcA->m[i][3] * srcB->m[3][3]) ; +	ESMatrix tmp; +	int i; + +	for (i = 0; i < 4; i++) { +		tmp.m[i][0] = (srcA->m[i][0] * srcB->m[0][0]) + +			      (srcA->m[i][1] * srcB->m[1][0]) + +			      (srcA->m[i][2] * srcB->m[2][0]) + +			      (srcA->m[i][3] * srcB->m[3][0]); + +		tmp.m[i][1] = (srcA->m[i][0] * srcB->m[0][1]) + +			      (srcA->m[i][1] * srcB->m[1][1]) + +			      (srcA->m[i][2] * srcB->m[2][1]) + +			      (srcA->m[i][3] * srcB->m[3][1]); + +		tmp.m[i][2] = (srcA->m[i][0] * srcB->m[0][2]) + +			      (srcA->m[i][1] * srcB->m[1][2]) + +			      (srcA->m[i][2] * srcB->m[2][2]) + +			      (srcA->m[i][3] * srcB->m[3][2]); + +		tmp.m[i][3] = (srcA->m[i][0] * srcB->m[0][3]) + +			      (srcA->m[i][1] * srcB->m[1][3]) + +			      (srcA->m[i][2] * srcB->m[2][3]) + +			      (srcA->m[i][3] * srcB->m[3][3]);  	}  	memcpy(result, &tmp, sizeof(ESMatrix));  } - -void -esMatrixLoadIdentity(ESMatrix *result) +void esMatrixLoadIdentity(ESMatrix* result)  {  	memset(result, 0x0, sizeof(ESMatrix));  	result->m[0][0] = 1.0f; @@ -232,4 +219,3 @@ esMatrixLoadIdentity(ESMatrix *result)  	result->m[2][2] = 1.0f;  	result->m[3][3] = 1.0f;  } - diff --git a/kmscube/esTransform.h b/kmscube/esTransform.h index c0383ab..f89e7b4 100644 --- a/kmscube/esTransform.h +++ b/kmscube/esTransform.h @@ -52,7 +52,7 @@ extern "C" {  typedef struct  { -	GLfloat   m[4][4]; +	GLfloat m[4][4];  } ESMatrix;  // @@ -60,14 +60,14 @@ typedef struct  /// \param result Specifies the input matrix.  Scaled matrix is returned in result.  /// \param sx, sy, sz Scale factors along the x, y and z axes respectively  // -void esScale(ESMatrix *result, GLfloat sx, GLfloat sy, GLfloat sz); +void esScale(ESMatrix* result, GLfloat sx, GLfloat sy, GLfloat sz);  //  /// \brief multiply matrix specified by result with a translation matrix and return new matrix in result  /// \param result Specifies the input matrix.  Translated matrix is returned in result.  /// \param tx, ty, tz Scale factors along the x, y and z axes respectively  // -void esTranslate(ESMatrix *result, GLfloat tx, GLfloat ty, GLfloat tz); +void esTranslate(ESMatrix* result, GLfloat tx, GLfloat ty, GLfloat tz);  //  /// \brief multiply matrix specified by result with a rotation matrix and return new matrix in result @@ -75,7 +75,7 @@ void esTranslate(ESMatrix *result, GLfloat tx, GLfloat ty, GLfloat tz);  /// \param angle Specifies the angle of rotation, in degrees.  /// \param x, y, z Specify the x, y and z coordinates of a vector, respectively  // -void esRotate(ESMatrix *result, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +void esRotate(ESMatrix* result, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);  //  // \brief multiply matrix specified by result with a perspective matrix and return new matrix in result @@ -84,7 +84,7 @@ void esRotate(ESMatrix *result, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);  /// \param bottom, top Coordinates for the bottom and top horizontal clipping planes  /// \param nearZ, farZ Distances to the near and far depth clipping planes.  Both distances must be positive.  // -void esFrustum(ESMatrix *result, float left, float right, float bottom, float top, float nearZ, float farZ); +void esFrustum(ESMatrix* result, float left, float right, float bottom, float top, float nearZ, float farZ);  //  /// \brief multiply matrix specified by result with a perspective matrix and return new matrix in result @@ -94,7 +94,7 @@ void esFrustum(ESMatrix *result, float left, float right, float bottom, float to  /// \param nearZ Near plane distance  /// \param farZ Far plane distance  // -void esPerspective(ESMatrix *result, float fovy, float aspect, float nearZ, float farZ); +void esPerspective(ESMatrix* result, float fovy, float aspect, float nearZ, float farZ);  //  /// \brief multiply matrix specified by result with a perspective matrix and return new matrix in result @@ -103,20 +103,20 @@ void esPerspective(ESMatrix *result, float fovy, float aspect, float nearZ, floa  /// \param bottom, top Coordinates for the bottom and top horizontal clipping planes  /// \param nearZ, farZ Distances to the near and far depth clipping planes.  These values are negative if plane is behind the viewer  // -void esOrtho(ESMatrix *result, float left, float right, float bottom, float top, float nearZ, float farZ); +void esOrtho(ESMatrix* result, float left, float right, float bottom, float top, float nearZ, float farZ);  //  /// \brief perform the following operation - result matrix = srcA matrix * srcB matrix  /// \param result Returns multiplied matrix  /// \param srcA, srcB Input matrices to be multiplied  // -void esMatrixMultiply(ESMatrix *result, ESMatrix *srcA, ESMatrix *srcB); +void esMatrixMultiply(ESMatrix* result, ESMatrix* srcA, ESMatrix* srcB);  //  //// \brief return an indentity matrix  //// \param result returns identity matrix  // -void esMatrixLoadIdentity(ESMatrix *result); +void esMatrixLoadIdentity(ESMatrix* result);  #ifdef __cplusplus  } | 
