unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* [PATCH] guile-figl - Add wrappers for common texture functions.
@ 2013-06-13  1:14 David Thompson
  2013-07-19 16:38 ` Daniel Hartwig
  0 siblings, 1 reply; 3+ messages in thread
From: David Thompson @ 2013-06-13  1:14 UTC (permalink / raw)
  To: guile-user; +Cc: David Thompson

Filled in some holes regarding OpenGL texture functions. There are 2
left as TODO that I'm not quite sure how to handle nicely.

---
 figl/gl.scm | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 72 insertions(+), 4 deletions(-)

diff --git a/figl/gl.scm b/figl/gl.scm
index edbd7c8..4924be1 100644
--- a/figl/gl.scm
+++ b/figl/gl.scm
@@ -1,17 +1,17 @@
 ;;; figl
 ;;; Copyright (C) 2013 Andy Wingo <wingo@pobox.com>
 ;;; Copyright (C) 2013 Daniel Hartwig <mandyke@gmail.com>
-;;;
+;;;
 ;;; Figl is free software: you can redistribute it and/or modify it
 ;;; under the terms of the GNU Lesser General Public License as
 ;;; published by the Free Software Foundation, either version 3 of the
 ;;; License, or (at your option) any later version.
-;;;
+;;;
 ;;; Figl is distributed in the hope that it will be useful, but WITHOUT
 ;;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 ;;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
 ;;; Public License for more details.
-;;;
+;;;
 ;;; You should have received a copy of the GNU Lesser General Public
 ;;; License along with this program.  If not, see
 ;;; <http://www.gnu.org/licenses/>.
@@ -293,7 +293,75 @@

 (re-export (%glShadeModel . set-gl-shade-model))

-\f
+;;;
+;;; 3.8.1 Texture Image Specification
+;;;
+
+(re-export (%glTexImage3D . gl-texture-image-3d)
+           (%glTexImage2D . gl-texture-image-2d)
+           (%glTexImage1D . gl-texture-image-1d))
+
+;;;
+;;; 3.8.2 Alternate Texture Image Specification Commands
+;;;
+
+(re-export (%glCopyTexImage2D . gl-copy-texture-image-2d)
+           (%glCopyTexImage1D . gl-copy-texture-image-1d)
+           (%glCopyTexSubImage3D . gl-copy-texture-sub-image-3d)
+           (%glCopyTexSubImage2D . gl-copy-texture-sub-image-2d)
+           (%glCopyTexSubImage1D . gl-copy-texture-sub-image-1d)
+           (%glTexSubImage3D . gl-texture-sub-image-3d)
+           (%glTexSubImage2D . gl-texture-sub-image-2d)
+           (%glTexSubImage1D . gl-texture-sub-image-1d))
+
+;;;
+;;; 3.8.3 Compressed Texture Images
+;;;
+
+(re-export (%glCompressedTexImage1D . gl-compressed-texture-image-1d)
+           (%glCompressedTexImage2D . gl-compressed-texture-image-2d)
+           (%glCompressedTexImage3D . gl-compressed-texture-image-3d)
+           (%glCompressedTexSubImage1D . gl-compressed-texture-sub-image-1d)
+           (%glCompressedTexSubImage2D . gl-compressed-texture-sub-image-2d)
+           (%glCompressedTexSubImage3D . gl-compressed-texture-sub-image-3d))
+
+;;;
+;;; 3.8.4 Texture Parameters
+;;;
+
+(re-export  (%glTexParameteri . gl-texture-parameter))
+
+;;;
+;;; 3.8.12 Texture Objects
+;;;
+
+;; TODO gl-are-textures-resident? gl-prioritze-textures
+
+(define (gl-generate-textures n)
+  (let ((bv (make-u32vector n 0)))
+    (%glGenTextures n bv)
+    (u32vector->list bv)))
+
+(define (gl-generate-texture)
+  (car (gl-generate-textures 1)))
+
+(define (gl-delete-textures textures)
+  (let ((bv (list->u32vector textures)))
+    (%glDeleteTextures (u32vector-length bv) bv)))
+
+;; emacs: (put 'with-gl-bind-texture 'scheme-indent-function 2)
+(define-syntax-rule (with-gl-bind-texture target id body ...)
+  (begin
+    (%glBindTexture target id)
+    body
+    ...
+    (%glBindTexture target 0)))
+
+(export gl-generate-textures
+        gl-generate-texture
+        gl-delete-textures
+        with-gl-bind-texture)
+
 ;;;
 ;;; 4.1 Per-Fragment Operations
 ;;;
--
1.8.3



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-07-19 22:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-13  1:14 [PATCH] guile-figl - Add wrappers for common texture functions David Thompson
2013-07-19 16:38 ` Daniel Hartwig
2013-07-19 22:53   ` David Thompson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).