added windows .ico example
This commit is contained in:
parent
26a453a704
commit
9257b43737
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.o
|
||||
*.exe
|
17
Makefile.win32
Normal file
17
Makefile.win32
Normal file
@ -0,0 +1,17 @@
|
||||
CC=tcc
|
||||
CFLAGS= -I./win32/include -L./win32/lib
|
||||
|
||||
all: fps_counter windows_icon
|
||||
|
||||
fps_counter:
|
||||
$(CC) $(CFLAGS) fps_counter.c -lglfw3 -lopengl32 -o fps_counter.exe
|
||||
|
||||
windows_icon: icon.o
|
||||
$(CC) $(CFLAGS) windows_icon.c icon.o -lglfw3 -lopengl32 -o windows_icon.exe
|
||||
|
||||
icon.o:
|
||||
windres -O coff win32/icon/resource.rc -o icon.o
|
||||
|
||||
clean:
|
||||
del *.o
|
||||
del *.exe
|
@ -4,7 +4,11 @@
|
||||
|
||||
Compile: gcc fps_counter.c -lglfw -lGL
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#ifndef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#include "GLFW/glfw3.h"
|
||||
|
||||
int main()
|
||||
@ -26,7 +30,7 @@ int main()
|
||||
|
||||
int frames = 0;
|
||||
double t, t0, fps;
|
||||
char title_string[200];
|
||||
char title_string[10];
|
||||
|
||||
t0 = glfwGetTime();
|
||||
|
||||
@ -49,7 +53,7 @@ int main()
|
||||
if((t - t0) > 1.0 || frames == 0)
|
||||
{
|
||||
fps = (double)frames / (t - t0);
|
||||
sprintf(title_string, "FPS: %.1f FPS", fps);
|
||||
sprintf(title_string, "FPS: %.1f", fps);
|
||||
glfwSetWindowTitle(window, title_string);
|
||||
t0 = t;
|
||||
frames = 0;
|
||||
|
1
win32/icon/resource.rc
Normal file
1
win32/icon/resource.rc
Normal file
@ -0,0 +1 @@
|
||||
AppIconNm ICON "windows.ico"
|
BIN
win32/icon/windows.ico
Normal file
BIN
win32/icon/windows.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.4 KiB |
1526
win32/include/GL/GL.H
Normal file
1526
win32/include/GL/GL.H
Normal file
File diff suppressed because it is too large
Load Diff
3340
win32/include/GLFW/glfw3.h
Normal file
3340
win32/include/GLFW/glfw3.h
Normal file
File diff suppressed because it is too large
Load Diff
356
win32/include/GLFW/glfw3native.h
Normal file
356
win32/include/GLFW/glfw3native.h
Normal file
@ -0,0 +1,356 @@
|
||||
/*************************************************************************
|
||||
* GLFW 3.1 - www.glfw.org
|
||||
* A library for OpenGL, window and input
|
||||
*------------------------------------------------------------------------
|
||||
* Copyright (c) 2002-2006 Marcus Geelnard
|
||||
* Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would
|
||||
* be appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not
|
||||
* be misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef _glfw3_native_h_
|
||||
#define _glfw3_native_h_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* Doxygen documentation
|
||||
*************************************************************************/
|
||||
|
||||
/*! @defgroup native Native access
|
||||
*
|
||||
* **By using the native access functions you assert that you know what you're
|
||||
* doing and how to fix problems caused by using them. If you don't, you
|
||||
* shouldn't be using them.**
|
||||
*
|
||||
* Before the inclusion of @ref glfw3native.h, you must define exactly one
|
||||
* window system API macro and exactly one context creation API macro. Failure
|
||||
* to do this will cause a compile-time error.
|
||||
*
|
||||
* The available window API macros are:
|
||||
* * `GLFW_EXPOSE_NATIVE_WIN32`
|
||||
* * `GLFW_EXPOSE_NATIVE_COCOA`
|
||||
* * `GLFW_EXPOSE_NATIVE_X11`
|
||||
*
|
||||
* The available context API macros are:
|
||||
* * `GLFW_EXPOSE_NATIVE_WGL`
|
||||
* * `GLFW_EXPOSE_NATIVE_NSGL`
|
||||
* * `GLFW_EXPOSE_NATIVE_GLX`
|
||||
* * `GLFW_EXPOSE_NATIVE_EGL`
|
||||
*
|
||||
* These macros select which of the native access functions that are declared
|
||||
* and which platform-specific headers to include. It is then up your (by
|
||||
* definition platform-specific) code to handle which of these should be
|
||||
* defined.
|
||||
*/
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* System headers and types
|
||||
*************************************************************************/
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WIN32)
|
||||
// This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
|
||||
// example to allow applications to correctly declare a GL_ARB_debug_output
|
||||
// callback) but windows.h assumes no one will define APIENTRY before it does
|
||||
#undef APIENTRY
|
||||
#include <windows.h>
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_COCOA)
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
#if defined(__OBJC__)
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#else
|
||||
typedef void* id;
|
||||
#endif
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_X11)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#else
|
||||
#error "No window API selected"
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WGL)
|
||||
/* WGL is declared by windows.h */
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_NSGL)
|
||||
/* NSGL is declared by Cocoa.h */
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_GLX)
|
||||
#include <GL/glx.h>
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_EGL)
|
||||
#include <EGL/egl.h>
|
||||
#else
|
||||
#error "No context API selected"
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* Functions
|
||||
*************************************************************************/
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WIN32)
|
||||
/*! @brief Returns the adapter device name of the specified monitor.
|
||||
*
|
||||
* @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`)
|
||||
* of the specified monitor, or `NULL` if an [error](@ref error_handling)
|
||||
* occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the display device name of the specified monitor.
|
||||
*
|
||||
* @return The UTF-8 encoded display device name (for example
|
||||
* `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `HWND` of the specified window.
|
||||
*
|
||||
* @return The `HWND` of the specified window, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WGL)
|
||||
/*! @brief Returns the `HGLRC` of the specified window.
|
||||
*
|
||||
* @return The `HGLRC` of the specified window, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_COCOA)
|
||||
/*! @brief Returns the `CGDirectDisplayID` of the specified monitor.
|
||||
*
|
||||
* @return The `CGDirectDisplayID` of the specified monitor, or
|
||||
* `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `NSWindow` of the specified window.
|
||||
*
|
||||
* @return The `NSWindow` of the specified window, or `nil` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_NSGL)
|
||||
/*! @brief Returns the `NSOpenGLContext` of the specified window.
|
||||
*
|
||||
* @return The `NSOpenGLContext` of the specified window, or `nil` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_X11)
|
||||
/*! @brief Returns the `Display` used by GLFW.
|
||||
*
|
||||
* @return The `Display` used by GLFW, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI Display* glfwGetX11Display(void);
|
||||
|
||||
/*! @brief Returns the `RRCrtc` of the specified monitor.
|
||||
*
|
||||
* @return The `RRCrtc` of the specified monitor, or `None` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `RROutput` of the specified monitor.
|
||||
*
|
||||
* @return The `RROutput` of the specified monitor, or `None` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `Window` of the specified window.
|
||||
*
|
||||
* @return The `Window` of the specified window, or `None` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_GLX)
|
||||
/*! @brief Returns the `GLXContext` of the specified window.
|
||||
*
|
||||
* @return The `GLXContext` of the specified window, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_EGL)
|
||||
/*! @brief Returns the `EGLDisplay` used by GLFW.
|
||||
*
|
||||
* @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
|
||||
|
||||
/*! @brief Returns the `EGLContext` of the specified window.
|
||||
*
|
||||
* @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
|
||||
|
||||
/*! @brief Returns the `EGLSurface` of the specified window.
|
||||
*
|
||||
* @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @par Thread Safety
|
||||
* This function may be called from any thread. Access is not synchronized.
|
||||
*
|
||||
* @par History
|
||||
* Added in GLFW 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _glfw3_native_h_ */
|
||||
|
BIN
win32/lib/OPENGL32.LIB
Normal file
BIN
win32/lib/OPENGL32.LIB
Normal file
Binary file not shown.
86
win32/lib/glfw3.def
Normal file
86
win32/lib/glfw3.def
Normal file
@ -0,0 +1,86 @@
|
||||
LIBRARY glfw3.dll
|
||||
|
||||
EXPORTS
|
||||
glfwCreateCursor
|
||||
glfwCreateStandardCursor
|
||||
glfwCreateWindow
|
||||
glfwDefaultWindowHints
|
||||
glfwDestroyCursor
|
||||
glfwDestroyWindow
|
||||
glfwExtensionSupported
|
||||
glfwGetClipboardString
|
||||
glfwGetCurrentContext
|
||||
glfwGetCursorPos
|
||||
glfwGetFramebufferSize
|
||||
glfwGetGammaRamp
|
||||
glfwGetInputMode
|
||||
glfwGetJoystickAxes
|
||||
glfwGetJoystickButtons
|
||||
glfwGetJoystickName
|
||||
glfwGetKey
|
||||
glfwGetMonitorName
|
||||
glfwGetMonitorPhysicalSize
|
||||
glfwGetMonitorPos
|
||||
glfwGetMonitors
|
||||
glfwGetMouseButton
|
||||
glfwGetPrimaryMonitor
|
||||
glfwGetProcAddress
|
||||
glfwGetTime
|
||||
glfwGetVersion
|
||||
glfwGetVersionString
|
||||
glfwGetVideoMode
|
||||
glfwGetVideoModes
|
||||
glfwGetWGLContext
|
||||
glfwGetWin32Adapter
|
||||
glfwGetWin32Monitor
|
||||
glfwGetWin32Window
|
||||
glfwGetWindowAttrib
|
||||
glfwGetWindowFrameSize
|
||||
glfwGetWindowMonitor
|
||||
glfwGetWindowPos
|
||||
glfwGetWindowSize
|
||||
glfwGetWindowUserPointer
|
||||
glfwHideWindow
|
||||
glfwIconifyWindow
|
||||
glfwInit
|
||||
glfwJoystickPresent
|
||||
glfwMakeContextCurrent
|
||||
glfwPollEvents
|
||||
glfwPostEmptyEvent
|
||||
glfwRestoreWindow
|
||||
glfwSetCharCallback
|
||||
glfwSetCharModsCallback
|
||||
glfwSetClipboardString
|
||||
glfwSetCursor
|
||||
glfwSetCursorEnterCallback
|
||||
glfwSetCursorPos
|
||||
glfwSetCursorPosCallback
|
||||
glfwSetDropCallback
|
||||
glfwSetErrorCallback
|
||||
glfwSetFramebufferSizeCallback
|
||||
glfwSetGamma
|
||||
glfwSetGammaRamp
|
||||
glfwSetInputMode
|
||||
glfwSetKeyCallback
|
||||
glfwSetMonitorCallback
|
||||
glfwSetMouseButtonCallback
|
||||
glfwSetScrollCallback
|
||||
glfwSetTime
|
||||
glfwSetWindowCloseCallback
|
||||
glfwSetWindowFocusCallback
|
||||
glfwSetWindowIconifyCallback
|
||||
glfwSetWindowPos
|
||||
glfwSetWindowPosCallback
|
||||
glfwSetWindowRefreshCallback
|
||||
glfwSetWindowShouldClose
|
||||
glfwSetWindowSize
|
||||
glfwSetWindowSizeCallback
|
||||
glfwSetWindowTitle
|
||||
glfwSetWindowUserPointer
|
||||
glfwShowWindow
|
||||
glfwSwapBuffers
|
||||
glfwSwapInterval
|
||||
glfwTerminate
|
||||
glfwWaitEvents
|
||||
glfwWindowHint
|
||||
glfwWindowShouldClose
|
BIN
win32/lib/glfw3dll.a
Normal file
BIN
win32/lib/glfw3dll.a
Normal file
Binary file not shown.
BIN
win32/lib/libglfw3.a
Normal file
BIN
win32/lib/libglfw3.a
Normal file
Binary file not shown.
38
windows_icon.c
Normal file
38
windows_icon.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
GLFW3 window icon
|
||||
Source: https://github.com/IIIypuk/glfw-examples
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
|
||||
LPSTR lpszCmdLine, int nShowCmd)
|
||||
{
|
||||
GLFWwindow *window;
|
||||
if (!glfwInit())
|
||||
return -1;
|
||||
|
||||
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
|
||||
window = glfwCreateWindow(192, 64, "Windows icon", NULL, NULL);
|
||||
|
||||
if (!window)
|
||||
{
|
||||
glfwTerminate();
|
||||
return -1;
|
||||
}
|
||||
|
||||
glfwMakeContextCurrent(window);
|
||||
|
||||
while (!glfwWindowShouldClose(window))
|
||||
{
|
||||
glClearColor(0, 0, 0, 1);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
glfwSwapBuffers(window);
|
||||
glfwPollEvents();
|
||||
}
|
||||
|
||||
glfwTerminate();
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user