update
This commit is contained in:
8
main.cpp
8
main.cpp
@@ -2,11 +2,15 @@
|
||||
#include "include/rewindow/types/window.h"
|
||||
int main() {
|
||||
auto* window = new(RWindow);
|
||||
window->init(RenderingAPI::OPENGL, "name",100,100,false);
|
||||
window->init(RenderingAPI::OPENGL, "name",1152,864, false);
|
||||
window->setFlag(RWindowFlags::RESIZABLE, false);
|
||||
int i;
|
||||
while (true) {
|
||||
if (i <= 10)
|
||||
window->pollEvents();
|
||||
|
||||
window->glSwapBuffers();
|
||||
i++;
|
||||
std::cout << i << std::endl;
|
||||
if (window->keyDown(SCANCODE::A)) {
|
||||
std::cout << "A" << std::endl;
|
||||
std::cout << (int64_t) window->getEvent(SCANCODE::A).empty() << std::endl;
|
||||
|
@@ -1,6 +1,7 @@
|
||||
#include <iostream>
|
||||
#include "rewindow/types/window.h"
|
||||
|
||||
bool vsync = false;
|
||||
Window window;
|
||||
XEvent xev;
|
||||
Display* display = XOpenDisplay(nullptr);
|
||||
@@ -13,17 +14,19 @@ XWindowAttributes windowAttributes;
|
||||
Atom wmDeleteWindow;
|
||||
XSizeHints hints;
|
||||
GLXContext glContext;
|
||||
PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT = nullptr;
|
||||
|
||||
void RWindow::init(RenderingAPI api, const char* title, int width, int height, bool vsync) {
|
||||
void RWindow::init(RenderingAPI api, const char* title, int width, int height, bool sync) {
|
||||
if (api == RenderingAPI::OPENGL) {
|
||||
xSetWindowAttributes.border_pixel = BlackPixel(display, defaultScreen);
|
||||
xSetWindowAttributes.background_pixel = BlackPixel(display, defaultScreen);
|
||||
xSetWindowAttributes.override_redirect = True;
|
||||
xSetWindowAttributes.event_mask = ExposureMask;
|
||||
setVsyncEnabled(vsync);
|
||||
GLint glAttributes[] = {GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None};
|
||||
visual = glXChooseVisual(display, defaultScreen, glAttributes);
|
||||
glContext = glXCreateContext(display, visual, nullptr, GL_TRUE);
|
||||
setVsyncEnabled(sync);
|
||||
vsync = sync;
|
||||
xSetWindowAttributes.colormap = XCreateColormap(display, RootWindow(display, defaultScreen), visual->visual,
|
||||
AllocNone);
|
||||
|
||||
@@ -197,12 +200,14 @@ MouseButtonDownEvent RWindow::getEvent(MOUSEBUTTONCODE buttoncode) {
|
||||
|
||||
void RWindow::glSwapBuffers() {
|
||||
glXSwapBuffers(display,window);
|
||||
//This seems to be the best option for now
|
||||
//Because sending it *only once* doesn't work.
|
||||
setVsyncEnabled(vsync);
|
||||
}
|
||||
|
||||
void RWindow::setVsyncEnabled(bool b) {
|
||||
PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT = nullptr;
|
||||
glXSwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC)glXGetProcAddressARB((const GLubyte*)"glXSwapIntervalEXT");
|
||||
glXSwapIntervalEXT(display, None, b);
|
||||
glXSwapIntervalEXT(display, window, b);
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user