Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
a455501
Add OpenGL support on Mac and GTK
pcwalton May 30, 2016
4e7acaa
Update to cmake
mischnic Aug 6, 2018
6cd0135
Fixup
mischnic Aug 6, 2018
50bf42e
Cleanup
mischnic Aug 6, 2018
5b4816b
Restore histogram example
mischnic Aug 6, 2018
12eedf4
Wrap openglarea in box
mischnic Aug 7, 2018
594cae9
Fix opengl area on linux
mischnic Aug 7, 2018
716938c
Fix travis for OpenGL?
mischnic Aug 7, 2018
1111ca8
Cleanup
mischnic Aug 7, 2018
03dfaaf
Refactor macOS areas
mischnic Aug 7, 2018
f76f6f1
Merge branch 'master' into gl
mischnic Aug 9, 2018
110183e
Rename swapinterval to vsync
mischnic Aug 9, 2018
467a821
Use AppKit instead of CGL*
mischnic Aug 9, 2018
766ad02
*uipriv* AreaCommonView
mischnic Aug 9, 2018
3ed8e21
Fix compiler warning
mischnic Aug 9, 2018
a5bf9bf
hacked together windwos code
mischnic Aug 9, 2018
faf9833
More windows opengl functions
mischnic Aug 10, 2018
13379eb
Add Windows TODOs
mischnic Aug 10, 2018
dbd5b34
OpenGL windows
mischnic Aug 10, 2018
e5eda7a
Handle opengl errors on Windows
mischnic Aug 10, 2018
8cd0fbe
Remove uiOpenGLAreaGetSize
mischnic Aug 15, 2018
159b6f8
Fix openglarea keyevents on macos
mischnic Aug 19, 2018
e81bdbb
uiOpenGLAreaBeginUserWindow* mac
mischnic Aug 21, 2018
890e183
Add todos and more extensions code
mischnic Aug 26, 2018
40db11c
Cleanup, use GLEW in example
mischnic Aug 27, 2018
cdc836d
uiAreaBeginUser* on Win & Linux
mischnic Aug 27, 2018
2a012d9
Add keyevent to opengl test
mischnic Aug 27, 2018
ceb30e5
Cleanup, TODOs
mischnic Aug 27, 2018
ec8d5aa
Document default values, TODOs
mischnic Aug 29, 2018
b9c83bf
Fix windows compile errors
mischnic Aug 31, 2018
f75dde0
Linux fixups
mischnic Aug 31, 2018
00f092b
revert
mischnic Aug 31, 2018
9e995c6
Init in init function
mischnic Aug 31, 2018
b2f60b2
Properly compile GLEW
mischnic Aug 31, 2018
b521a55
Use context attributes on Linux
mischnic Aug 31, 2018
79ec41a
Make linux work!
mischnic Aug 31, 2018
ee0b889
Fixups for windows. It works (but flickers)!!!
mischnic Aug 31, 2018
0936ef1
linux cleanup
mischnic Sep 1, 2018
3be8aa7
Fix flickering on Windows
mischnic Sep 1, 2018
5541768
Resize/move openglarea linux
mischnic Sep 1, 2018
f302ca5
More helpful context errors on linux
mischnic Sep 1, 2018
406fa80
Deduplicate linux openglarea
mischnic Sep 1, 2018
3aabeb9
Fix line endings
mischnic Sep 2, 2018
76aa51a
Windows cleanup, feature checking
mischnic Sep 2, 2018
e85aaa4
Cleanup attributes handling
mischnic Sep 2, 2018
31ec22b
SRGB, Multisamling, Robustness on Linux and Win,
mischnic Sep 2, 2018
6dd998c
Use FindOpenGL
mischnic Sep 26, 2018
996f5f1
Fix link error on Linux
mischnic Sep 28, 2018
093899f
CMake + OpenGL Take 2
mischnic Oct 6, 2018
0b63fe3
There is no libm on win....
mischnic Oct 6, 2018
2e416bc
Fix opengl area size on Windows
mischnic Oct 7, 2018
b2a6cf6
Merge branch 'master' into gl
mischnic Nov 6, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ include: &toolchain_linux_amd64
update: true
packages:
- libgtk-3-dev
- libgl1-mesa-dev

include: &toolchain_linux_386
os: linux
Expand All @@ -18,6 +19,7 @@ include: &toolchain_linux_386
- gcc-multilib
- g++-multilib
- libgtk-3-dev:i386
- libgl1-mesa-dev:i386
# the rest fixes broken dependencies of libgtk:i386
- libgirepository-1.0-1:i386
- libglib2.0-dev:i386
Expand Down
3 changes: 2 additions & 1 deletion common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
list(APPEND _LIBUI_SOURCES
common/attribute.c
common/attrlist.c
common/attrstr.c
common/areaevents.c
common/attrstr.c
common/control.c
common/debug.c
common/matrix.c
common/opengl.c
common/opentype.c
common/shouldquit.c
common/tablemodel.c
Expand Down
1 change: 1 addition & 0 deletions common/controlsigs.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#define uiGroupSignature 0x47727062
#define uiLabelSignature 0x4C61626C
#define uiMultilineEntrySignature 0x4D6C6E45
#define uiOpenGLAreaSignature 0x4F474C41
#define uiProgressBarSignature 0x50426172
#define uiRadioButtonsSignature 0x5264696F
#define uiSeparatorSignature 0x53657061
Expand Down
95 changes: 95 additions & 0 deletions common/opengl.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
// 28 may 2016

#include <stdlib.h>
#include "../ui.h"
#include "uipriv.h"

uiOpenGLAttributes *uiNewOpenGLAttributes() {
uiOpenGLAttributes *a = uiprivAlloc(sizeof(uiOpenGLAttributes), "uiOpenGLAttributes");
if (a == NULL)
return NULL;

//TODO document availability on different platforms
// compare with wxWidgets/glcanvas

a->RedBits = a->GreenBits = a->BlueBits = a->AlphaBits = 8;
a->DepthBits = 24;
a->StencilBits = 8;
a->Stereo = 0;
a->Samples = 0;
a->SRGBCapable = 0;
a->DoubleBuffer = 1;
a->UseOpenGLES = 0;
a->MajorVersion = 1;
a->MinorVersion = 0;
a->ForwardCompat = 0;
a->DebugContext = 0;
a->CompatProfile = 0;
a->Robustness = 0;

return a;
}

void uiFreeOpenGLAttributes(uiOpenGLAttributes *attribs) {
uiprivFree(attribs);
}

void uiOpenGLAttributesSetAttribute(uiOpenGLAttributes *attribs, uiOpenGLAttribute attribute, int value) {
//TODO validate bool params
switch (attribute) {
case uiOpenGLAttributeRedBits:
attribs->RedBits = value;
break;
case uiOpenGLAttributeGreenBits:
attribs->GreenBits = value;
break;
case uiOpenGLAttributeBlueBits:
attribs->BlueBits = value;
break;
case uiOpenGLAttributeAlphaBits:
attribs->AlphaBits = value;
break;
case uiOpenGLAttributeDepthBits:
attribs->DepthBits = value;
break;
case uiOpenGLAttributeStencilBits:
attribs->StencilBits = value;
break;
case uiOpenGLAttributeStereo:
attribs->Stereo = value;
break;
case uiOpenGLAttributeSamples:
attribs->Samples = value;
break;
case uiOpenGLAttributeSRGBCapable:
attribs->SRGBCapable = value;
break;
case uiOpenGLAttributeDoubleBuffer:
attribs->DoubleBuffer = value;
break;
case uiOpenGLAttributeUseOpenGLES:
attribs->UseOpenGLES = value;
break;
case uiOpenGLAttributeMajorVersion:
attribs->MajorVersion = value;
break;
case uiOpenGLAttributeMinorVersion:
attribs->MinorVersion = value;
break;
case uiOpenGLAttributeForwardCompat:
attribs->ForwardCompat = value;
break;
case uiOpenGLAttributeDebugContext:
attribs->DebugContext = value;
break;
case uiOpenGLAttributeCompatProfile:
attribs->CompatProfile = value;
break;
case uiOpenGLAttributeRobustness:
attribs->Robustness = value;
break;
default:
uiprivUserBug("Invalid OpenGL attribute");
}
}

21 changes: 21 additions & 0 deletions common/uipriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,27 @@ extern void uiprivFallbackTransformSize(uiDrawMatrix *, double *, double *);
// OS-specific text.* files
extern int uiprivStricmp(const char *a, const char *b);

// opengl.c
struct uiOpenGLAttributes {
unsigned char RedBits;
unsigned char GreenBits;
unsigned char BlueBits;
unsigned char AlphaBits;
unsigned char DepthBits;
unsigned char StencilBits;
unsigned char Stereo;
unsigned char Samples;
unsigned char SRGBCapable;
unsigned char DoubleBuffer;
unsigned char UseOpenGLES;
unsigned char MajorVersion;
unsigned char MinorVersion;
unsigned char ForwardCompat;
unsigned char DebugContext;
char CompatProfile;
unsigned char Robustness;
};

#ifdef __cplusplus
}
#endif
4 changes: 3 additions & 1 deletion darwin/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ list(APPEND _LIBUI_SOURCES
darwin/aat.m
darwin/alloc.m
darwin/area.m
darwin/areacommon.m
darwin/areaevents.m
darwin/attrstr.m
darwin/autolayout.m
Expand Down Expand Up @@ -34,6 +35,7 @@ list(APPEND _LIBUI_SOURCES
darwin/map.m
darwin/menu.m
darwin/multilineentry.m
darwin/openglarea.m
darwin/opentype.m
darwin/progressbar.m
darwin/radiobuttons.m
Expand All @@ -60,5 +62,5 @@ list(APPEND _LIBUI_INCLUDEDIRS
set(_LIBUI_INCLUDEDIRS _LIBUI_INCLUDEDIRS PARENT_SCOPE)

set(_LIBUI_LIBS
objc "-framework Foundation" "-framework AppKit"
objc "-framework Foundation" "-framework AppKit" "-framework OpenGL"
PARENT_SCOPE)
Loading