2014-11-30 3 views
6

크기 조정 가능에서 크기를 조정할 수없는 GLFW3 창이 있습니다.크기를 조정할 수없는 GLFW 창 설정

창을 만든 후에 창 힌트를 변경해 보았습니다. 그러나 힌트는 만들려는 창에만 영향을주기 때문에 아무런 변화가 없습니다.

내가 뭘하려 :

glfwWindowHint(GLFW_RESIZABLE, GL_FALSE) 

이 가능합니까? 내가 생각한 한 가지 방법은 크기를 조정할 수없는 창 크기를 다시 현재 크기로 변경하는 onResize 함수를 사용하는 것이 었습니다. 이것은 매우 해커처럼 보인다.

감사

+1

glfwCreateWindow (...) 앞에 명령을 넣으면 작동합니다. 이제 창 크기를 조정할 수 없습니다. (버전 : GLFW 3.0.4) – mathew11

답변

5

GLFW 현재 윈도우를 만든 후 그 상태 변화에 대한 API가 없습니다.

  1. 당신이 이미 가지고있는 해결 방법 : GLFW를 사용하려는 경우

    , 나는 두 가지 옵션을 참조하십시오.

  2. 상태를 전환 할 때 새 창을 만듭니다.
  3. GLFW native access을 사용하여 실제 창 핸들을 얻고 각 플랫폼 (기능)에 대한 기능을 구현하십시오.

모든 변형은 나에게 너무 매력적으로 보이지 않습니다. 옵션 2는 GL 문맥이 GLFW에서 창에 묶이는 방법 때문에 특히 나쁘다. 추가 (보이지 않는) 창과 공유 GL 문맥을 사용하여 가능해야하지만 추악 할 것이다.

옵션 3은 모든 관련 플랫폼에 대해 구현되면 완벽하게 작동해야한다는 장점이 있습니다. GLFW는 오픈 소스이기 때문에 옵션 3b)도 가능합니다. GLFW에서 직접 구현하고 API를 확장합니다. 이 기능을 공식 GLFW 버전에 통합 할 수도 있습니다.

5

귀하의 접근 방식은 GLFW 3.1.1-1에서 작동합니다.

#include <GLFW/glfw3.h> 

int main(void) { 
    GLFWwindow* window; 
    if (!glfwInit()) 
     return -1; 
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); 
    window = glfwCreateWindow(640, 480, __FILE__, NULL, NULL); 
    if (!window) { 
     glfwTerminate(); 
     return -1; 
    } 
    glfwMakeContextCurrent(window); 
    while (!glfwWindowShouldClose(window)) { 
     glfwSwapBuffers(window); 
     glfwPollEvents(); 
    } 
    glfwTerminate(); 
    return 0; 
} 
+2

Downvoters,이 대답이 잘못되어 왜 정보를 배우고 향상시킬 수 있는지 알려주 줘서 고마워. –

0

작품을하지만 당신이 엄격 그것을 토글 할 수 있도록해야하는 경우에만이기 때문에 나는 매우, 다른 솔루션을 사용하는 것이 좋습니다 아래 코드와 우분투 15.10에서 테스트.

IntBuffer wid = BufferUtils.createIntBuffer(1); 
IntBuffer hei = BufferUtils.createIntBuffer(1); 

glfwGetWindowSize(window, wid, hei); 

int windowWidth = wid.get(); 
int windowHeight = hei.get(); // I recommend making this public 

while(!glfwWindowShouldClose(window)) { 
    glfwSetWindowSize(window, windowWidth, windowHeight); 
    // People can still maximize the window ... Comment if you have a solution :) 
} 
관련 문제