프레임워크 안쓰고 리눅스에서 GUI 프로그래밍 하려면 어떻게 하죠?
글쓴이: fastwater / 작성시간: 수, 2011/03/09 - 1:29오전
음... 학교 프로젝트 수업 개요를 들어보니 라이브러리 사용 제한 한다던데
전 그냥 GUI 쪽은 MFC 조금 깨작 깨작 만져본 정도입니다. 제대로 공부한것도 아니고 그냥 미로찾기 하나 만들고 잘 돌아가네? 하고 맛보기만 봤습니다.
일단 리눅스+시스템콜+소켓프로그래밍이 기본조건이라 당연히 MFC는 못쓰고, 인터넷에서 찾아보니 QT라는게 있네요.
라이브러리 쓰지 말라고 했으니 아마 그 말은 프레임워크 쓰지 말라는 소리 같은데... 그럼 QT도 당연히 제외네요.
'일반적인' 대학교 3학년 레벨로 프레임워크 없이 간단한 네트워크 게임을 만드려면 뭐를 공부해야 할까요?
Forums:
X-window system 자체가 프레임워크고,
X-window system 자체가 프레임워크고, 라이브러리입니다.
OpenGL, DirectX도 프레임워크고, 라이브러리입니다.
리눅스에서 프레임워크 안쓰고 GUI 프로그래밍 하는 방법은 OpenGL이나 X-window 같은넘들을 직접 구현하시면 됩니다.
대학교 3학년 과목에서 가르치는 지식수준만으로, OpenGL이나 X-Window를 구현하는것은 사실상 불가능해보입니다. 성공하시면 꼭 kldp.org에 포스팅 해주세요.
리눅스는 윈도우처럼 UI를 커널에서 관리하는게
리눅스는 윈도우처럼 UI를 커널에서 관리하는게 아니라서 (윈도우가 기형적인거죠...)
라이브러리를 통하지 않고서는 불가능합니다....랄까
framebuffer를 직접 다루는 방법도 있지만 그런 비현실적인 이야기가 요구조건일리가 없습니다 - _-)...
우분투와 미고에서 도입한다는 차세대 디스플레이 서버
우분투와 미고에서 도입한다는 차세대 디스플레이 서버 프로토콜인 wayland 는 UI 코드가 커널에 들어간다고 하네요.
성능상으로 보면 이게 더 나을지도.
교수님한테 전화해 보시던가 작년에 수업들은 사람에게
교수님한테 전화해 보시던가 작년에 수업들은 사람에게 문의하셔요.
* 포럼 주제와 무관한 신변잡기를 반복해서 올리지 맙시다.
* 질문 게시판 만이라도 익명 글쓰기를 막아야 한다고 생각합니다.
위에분 말씀대로 리눅스에서 GUI를 라이브러리 없이
위에분 말씀대로 리눅스에서 GUI를 라이브러리 없이 하라는건 프레임버퍼를 직접 제어하라는건데
이건 대학교 3학년 수준이 아닙니다.
(일단 프레임버퍼가 뭔지 이해하는 대학3학년이 몇명이나 될지...)
만약, 과제의 조건이 바뀐다면,
gtk나, qt를 이용해서 만들면 됩니다.
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
프레임 버퍼를 너무 어렵게 생각하시는 것 같습니다.
리눅스에서 프레임 버퍼를 직접 다룬 적은 없고, ms-dos 환경에서 video ram을 직접 다루어 게임을
만들어 본적은 있습니다.
위 두 가지의 차이가 많이 나는지는 제가 알지는 못하지만, 기본적인 개념은 같다고 봅니다.
제가 대학교 1/2학년때 C와 어셈을 통해 게임을 만드는 수업이 있었는데 대부분이 위 방법을 이용해 그림을 그리고,
키보드 인터럽트 벡터를 가로채 다중 키를 구현도 했습니다.
그리고 예전 게임 만들기 붐을 겪은 세대들은 프레임을 많이 이해하실것 같습니다.
네, 저도 대학교 1학년때 어셈블리어로 비디오램에
네, 저도 대학교 1학년때 어셈블리어로 비디오램에 직접 점찍어서
게임을 만들어봤었습니다.
하지만 지금 대학생들은 예전 대학생들하고 많이 다르더라구요.
직설적으로 말해 실력이 형편없습니다.
잘하는 아이들도 있겠지만 평균적으로 하향 평준화된것으로 저는 판단됩니다.
그렇다고는 해도,
제가 후배 대학생들을 무시한걸 수도 있겠지만,
만드는 방법을 잘 가이드 받고
절차를 교육받는다면 가능하긴 하겠네요..^^;
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
fb가 다른점은..
딱히 복잡한게 아니라 제대로 된 문서가 없습니다.
커널 문서에서도 그냥 mmap, ioctl 쓰라고만 나와있지 그 외에는....
linux/fb.h를 들여다보면 어느정도 눈에는 보입니다만,
오랜기간 다뤄온 사람들조차도 단순히 감으로 짠다는 말이 나올 정도라서...
컴공이 전공이 아닌 저도 그 정도는 예전에 많이 해
컴공이 전공이 아닌 저도 그 정도는 예전에 많이 해 봤었습니다.
초등학교때 애플 2 가지고 시작해서 msx 에서도 많이 해봤었고, 그 이후 ibm pc 로 넘어와서도 많이 하던 짓이죠.
문제는, 현재는 컴공 전공자도 저정도 되는 걸 직접 해본 사람이 별로 없다는 거죠. 위에 나빌옹 말씀대로 말이죠.
외주 줄 때마다 아주 환장할 노릇입니다. 스펙은 무지하게 높은데, 정작 불러다 놓고 시켜 보면 ctrl-c, ctrl-v 해 놓고 자기 실력이라고 우기는 경우가 80% 이상입니다.
---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도
즐겁게 놀아보자.
그 교수님(조교?)님은 gtk, qt만 라이브러리의
그 교수님(조교?)님은 gtk, qt만 라이브러리의 범주에 넣으신 듯... X api를 사용하시면 되시겠네요.
꼭 GUI로 해야 하는 것이 아니라면..
텍스트 머드 게임도 생각해 볼 수 있겠습니다.
프레임 버퍼 쓰라고 하는게 맞는 것 같습니다. 학부
프레임 버퍼 쓰라고 하는게 맞는 것 같습니다. 학부 수준에도 충분히 할 수 있는 수준이니 큰 걱정하실 필요 없을 것 같습니다.
혹시 정보 필요하시면 연락 주세요.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
답변들 감사합니다.
왠지 프레임 버퍼?를 직접 쓰는건 아닐꺼 같네요. QT 사용 가능한지 다음 시간에 조교분한테 물어봐야겠습니다.
확실한 가이드 라인을 물어 보는것이 좋을듯하네요.
교수님이나 조교님께 QT, GTK 같은 구체적인 예시를 들어
확실한 가이드 라인을 확정하는것이 좋을듯하네요.
더불어 조금 한보 더 전진하여 교육 목적을 빨리 알아내고 이해를 했다면,
스스로 가이드 라인이 생기겠지요.
수업의 목적이 예를 들면 sys/socket.h 정도의 C 라이브러리를 이용한 네트워크 이해인데,
QT, GTK, boost Asio 등을 쓴다고 하면 수업을 진행하는 분 입장에서는 힘빠지지요.
그래도 이럴 경우 QT, GTK의 네트워크 부분을 제외한 순수 GUI 부분만은 허용해 주시겠지요.
숙제를 낸 사람도 뭔가 명확한 개념이 없는 듯...
숙제를 낸 사람도 뭔가 명확한 개념이 없는 듯... 갑자기 어느 대학교인지 궁금해지네요... 학생들이 아주 그냥 고생들이시네.
ㅁ
ㅁ
그런건 아닌거 같습니다 ^^;; 제가 명확하게 이해를 못한거에요.
일단 과제는 아니고 수업 자체가 프로젝트 수업이에요. 일단 수업의 목적 자체는 소켓+시스템콜을 이용하여 실제로 '의미' 있는 프로그램을 설계 하는게 목적입니다. 어떤분이 라이브러리 사용에 대해서 물었는데 라이브러리 사용을 '어느정도' 제한 한다고 했는데 뉘앙스가 qt 같은 것도 제한 하는 걸로 들렸거든요. 명확한 기준은 다음 수업시간에 알려주신다고 했으니 다음 수업 때 확실하게 알아낸 뒤 프로젝트 설계를 시작해야겠네요.
라이브러리를 사용하지 않고 만드는
라이브러리를 사용하지 않고 만드는 조건이라면...
libc 는 사용해도 되는지 물어보세요.
리눅스에 있는 gtk 같은 것들(GUI Toolkit)이 xlib 같은 저수준의 라이브러리로 구현한 것들입니다.
xlib, gtk 사용해도 되는건지를 물어보세요.
Qt, GTK 는 프레임워크가 아닙니다. Qt, GTK 는 GUI Toolkit 입니다.
프레임워크로 부를 만하려면 glade 정도가 되어야겠죠.
.
HTML을 사용해서;;;;;
텍스트만으로 만들 수 있으니 이것이 정답!
텍스트만으로 만들 수 있으니 이것이 정답!
오오...
html5로 움직이게 할 수 있군요...
오오.. 괜찮은 방법같습니다 ㅎㅎ
너무들 복잡하게 생각 하시는듯.
제 생각에 교수 생각은
그냥 curse를 안쓴 CUI(Text Console UI)를 원하는게 아닌가 싶은데요.
그정도는 대학교 3학년이면 능히 짤수 있을만 하니깐요.
그리고 설령 진짜로 프레임버퍼를 사용해서 프로그래밍 하라는 것도.
대학교 과정 중에 임베디드 리눅스 같은 수업이 먼저 있었다면 이해가 갑니다.
사실 프레임버퍼가 어렵다고 해도 매우 특정한 간단한 프로그램만 만드는데
미리 수업에서 프레임 버퍼에 대해 알려 줬다면, 대학교 3학년 수준에서 못할만한 수준은 아닙니다.
어려울 지언정 할만 해 보이네요.
새 생각 :)
프레임버퍼 직접 쓰는 건 "로우 레벨"인 거지
프레임버퍼 직접 쓰는 건 "로우 레벨"인 거지 "어려운" 게 아닙니다. 근데 그게 "의미 있는" 건지는 잘 모르겠습니다.
일단 수업의 목적 자체는 소켓+시스템콜을 이용하여
그럼 라이브러리 사용을 제한한다는 것이, 소켓 + 시스템 콜을 편하게 해 주는 라이브러리 사용을 제한한다는 말이 아닌가요? 그럼 GUI toolkit 같은 것은 써도 무방할 듯.. 라이브러리가 한 두 종류가 아닌데, 어떤 라이브러리 사용이 제한되는지 조교에게 물어보세요.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
교수의 의도가 무엇인지 꼭 알려주시기 바랍니다.
교수의 의도가 무엇인지 꼭 알려주시기 바랍니다. 궁금해서 신경쓰입니다.