OS 없이 사용할수 있는 그래픽라이브러리?

oprsystem의 이미지

OS 없는 상태에서 그래픽 라이브러리의 작업은 검증하는데나..
만드는데. 많은 노력이 필요 합니다.

주로 2D 위주의 그래픽 라이브러리가 있나요?
OS 는 없는상태입니다.

서지훈의 이미지

무슨 말씀이신지?
OS없는 깡통에다 라이브러리는 설치해서 무어에 쓰실려구?
이건 필시 사과 박스에 하드 넣어 두고 자신이 말하는 작업을 처리해주길 원하는 것이랑 별반 다르지 않을것 같군요.

정확한 처한 상황과 해야할 일에 대한 좀 더 자세한 기술이 필요할 듯합니다.

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

freezm7의 이미지

OS 없는 곳에서라... 아마 임베디드 쪽으로 하시려나 보네요

저도 임베디드 쪽인데, VxWorks를 씁니다.
그런데 그래픽 라이브러리는 없는데 OSD 를 짜야해서,
제가 직접 아이디어를 내고 구현하고 있는 중이죠.

GoF의 디자인 패턴이라는 책과
Java Swing 라이브러리 소스코드(이거 불법인가-_-)를 좀 참고해서
간단한 GUI 라이브러리를 구현해가고 있는 중입니다.

그런데 님의 경우 OS 도 없는 곳이라면,
malloc 이나 new 연산자 같은것도 안 된다는 거 아닌가요?
그런 것도 안되는 시스템이라면 정말 작은 시스템일텐데
그래픽 라이브러리까지 필요할지 의문이군요.

좀 더 정확한 상황 설명이 있어야 도움이 될 것 같습니다.

즐겁게 살아 볼까나~*

vacancy의 이미지

Single Task만 수행하는
Embedded System에서는 있을법한 일이긴 한데요.
대개 그정도의 상황에서는,
덩치큰 2D 라이브러리를 사용하는 일이 웬만해선 없을것 같네요.
( OS를 올리지 않는다는건 그만큼 Resource가 부족하단 얘기니까 .. )

점이나 선 정도를 그릴수 있는, 혹은 비트맵 정도 찍을 수 있는
단순한 라이브러리 이상은 쓰기 힘들지 않을까요 ?

oprsystem의 이미지

답변 감사 드립니다.

특수한 사정으로 인해 OS 가 없는 시스템입니다.
작은 규모는 아니구요

리소스도 상당히 충분한 상태 입니다.

그리고.. malloc 이라든지 new 의 메모리 할당에
관련해서 말씀 드리자면
멀티프로세스 시스템이라면 커널이 메모리를
관리 하는것 때문에 오해 하신거 같으신데..
메모리 할당 자체는 커널이 없어도 가능합니다.

결국은 다른 라이브러리를 참고해서 만들어야 한다는
것이군요.. 털썩~

황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을

dawnsea의 이미지

저두 궁금합니다.

jpeg, gif, png 등등 파일 읽어서 뿌리는 라이브러리를 그냥 펌웨어 레벨에서
쉽게 copy & paste 가 가능한 소스가 있는지요?

일전에 쓸 일이 있었는데.
쏘스 포지를 대략 뒤진 결과, 영어랑 검색능력이 딸려서 그러는지
대부분 gd 랑 얽혀 있거나 해당 부분만 standalone 으로 떼내기는 힘들더라구요 ㅠ.ㅠ

또는 zlib 와도 관련이 있거나 해서 펌웨어 레벨에서 쉽게 쓸만한 것들이 없나
궁금합니다. ^^;

그 때는 결국;;; BMP로 돌렸죠 ㅠ.ㅠ

oprsystem의 이미지

저두 알아 보는 중인데요.

copy & paste 뿐만 아니라..
고수들만이 쓴다는
전설의 프로그래밍방법
modify 까지 필요하지 싶습니다.

황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을

oprsystem의 이미지

OPEN Project 로 진행해 보아도.. 상당히 괸찮을거 같다는 생각이 문득~ 드는군요.

HAL 계층을 따뤄둬서 시스템에 좀 덜 의존적으로
구성하는것은 어떤가요?

황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을

feanor의 이미지

SDL이 있지 않나요?

직사각형 영역을 화면에 "blit" 하는 루틴만 있으면 포팅이 가능한 것으로 알고 있습니다.

--feanor

jinyeong의 이미지

윗분 말씀처럼 SDL이나 GGI 등은 포팅이 어렵지 않게 가능할 것으로 보입니다.

실제로 OS없이 약간은 특이한(?) dsp 에도 해본 적이 있구요.

소스만 있다면 그리고 아주 특별히 OS dependent한 코드가 중요한 부분에 쓰이는 것이 아니라면,

대체로 자체 지원하는 library 내에서 porting이 가능합니다.

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

ssehoony의 이미지

그래픽 처리 루틴은 그래픽 칩셋에 의존하기 때문에 그래픽칩셋이 뭐냐가 중요하겠지요.

320 x 200 x 256 이나 640 x 480 x 16 모드의 경우는 그래픽 표준이기 때문에
위와 같은 표준에 정의된 환경에서 그래픽 작업을 한다면 그래픽 칩셋을 무시하고 코딩하시면 되니깐 많이 수월할 것 같네요.
그 이상을 원하신다면 각 그래픽 칩셋회사에서 제공하는 드라이버를 까보는 수밖에 없을 듯 하네요.

hys545의 이미지

freezm7 wrote:
OS 없는 곳에서라... 아마 임베디드 쪽으로 하시려나 보네요

저도 임베디드 쪽인데, VxWorks를 씁니다.
그런데 그래픽 라이브러리는 없는데 OSD 를 짜야해서,
제가 직접 아이디어를 내고 구현하고 있는 중이죠.

GoF의 디자인 패턴이라는 책과
Java Swing 라이브러리 소스코드(이거 불법인가-_-)를 좀 참고해서
간단한 GUI 라이브러리를 구현해가고 있는 중입니다.

그런데 님의 경우 OS 도 없는 곳이라면,
malloc 이나 new 연산자 같은것도 안 된다는 거 아닌가요?
그런 것도 안되는 시스템이라면 정말 작은 시스템일텐데
그래픽 라이브러리까지 필요할지 의문이군요.

좀 더 정확한 상황 설명이 있어야 도움이 될 것 같습니다.


sun의 swing버다
www.classpath.org에서 만드는
gnu classpath에 포함된 swing을 사용하면 라이센스 문제는 업는거로 압니다.

즐린

oprsystem의 이미지

많은 분들의 답변에 진심으로 감사 드립니다.

황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을

익명 사용자의 이미지

oprsystem wrote:
OS 없는 상태에서 그래픽 라이브러리의 작업은 검증하는데나..
만드는데. 많은 노력이 필요 합니다.

주로 2D 위주의 그래픽 라이브러리가 있나요?
OS 는 없는상태입니다.

라이브러리가 없고, 이 그래픽프로세서를 구동하는 드라이버가 없는 상태로 보입니다.
대신, 하드웨어 제어를 섬세하게 할 수 있는 환경이라는 의미도 되겠지요.

만일, 그렇다면.
1) 그래픽 프로세서의 칩셋 및 그래픽 프로세서 내의 레지스터 조작방법을 숙지 하셔야 합니다.
참고) 그래픽 카드의 주프로세서 또는 롬바이오스내에 기본 모드세팅 및 기본 픽셀 찍기등의
기능이 들어 있을것입니다. 그러나, 이보다도 저수준에서 작업을 원하신다면.
3) 거의 어셈블리어 수준으로 그래픽 모드세팅 루틴제작
4) 그래픽 프로세서(ATI라던가 모..)의 어드레싱에 대한 숙지(메인메모리 및 그래픽 카드의 메모리와의 관계 등에 대한 숙지)
5) 칼라인 경우 모드세팅과 관계 깊으며, 메모리 및, color table을 가지는 경우에도 유의
- DAC를 제어해야 하는 경우도 있음
5) 최소 모드로 놓고, 점찍는 라이브러리 제작
6) 점으로 선(line)라이브러리제작 - 웬만한 그래픽스 관련 서적이나 자료 널렸음
7) 그래픽 프리미티브들 (box, circle, 등 제작)- 웬만한 그래픽스 관련 서적이나 자료 널렸음
8) 이미지 디스플레이가 필요하다면, 이미지 디코더 라이브러리 제작,
화면 출력은 5-7에서 만든 그래픽 프리미티브사용

* 이후 윈도우라던가, 동영상등을 출력하는 고난도 그래픽이 필요하다면,
Frame처리등과 같은 그래픽 처리 자료구조 설계및 구현이 필요함(그래픽 서브시스템 제작)
* 2D 그래픽 및 이미지 처리에 대한 자료는 널리 알려져 있는 편이지만,
과거 DOS상에서 구현하던때의 자료가 보탬이 될듯함

익명 사용자의 이미지

집에 썩고 있는 책중에 그래픽 프로그램인가라는 책이 있습니다
(책이름은 자세히 모르겠군요 )
도스환경에서 c와 간단한 어셈으로 레지스터 와 그래픽 메모리에
직접 프로그램하는 책이 있습니다
기억하기로 점찍기 선긋기 원 파레트? 버퍼 또 뭐드라
하였든 저수준에서 그래픽을 제어하는 경우를 보았습니다
지금 그책을 구할실수 있는지 모르겠네요 ?

oprsystem의 이미지

답변 감사합니다.

많은 분들이 느끼시겠지만 검증된 알고리즘이라고
하더라도 코딩에서 실수하면 랩에서는 문제가 없어도
필드에서 문제가 생기는 경우가 있습니다.
금전적으로 든지 많은 손실이지요.

그래서 open project 는 그나마 제가 직접 작성하는것
보다 많이 검증되었다고 저는 믿습니다.

그리고 라인 긋고 뷰포트 설정해서 보여주고 이런것은 사실 어렵지 않습니다. 그것위의 상위레벨의
함수들 또한 직접 작성해 줘야 한다는 부담이 생깁니다.

저는 copy & paste 만 할줄 알기 때문에..T.T

황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을

jinyeong의 이미지

1. target system에서 기본적인 framebuffer 처리(점찍기, 색상처리등)이 가능합니까?
이건 위에서 말씀 하셨으니 가능하시겠지요.

2. standard library의 사용이 가능합니까?
불가능 하다면 일반적인 라이브러리(그래픽스던 뭐던)를 포팅할때 많은 시간을 허버해야 할지도 모릅니다.

위의 두가지가 된다면 제가 말씀드렸듯이 일반적인 그래픽스 라이브러리의 포팅은 어렵지 않습니다. 신경써야 할 부분이라면 색상 디스플레이쪽에서 yuv<-> rgb정도를 변환해주는 것 정도가 있겠지요. 그리고 target cpu의 성능이 좋지 않은 경우라면 DrawPoint 등의 함수를 inline이나 MACRO로 바꾸어주는 것도 좋은 선택이 될 수 있습니다.

그 외에 graphics 처리에 optimize된 library를 chip에서 제공한다면 필요한 부분에서 이를 대체해주는 것도 성능상 좋을 것 같네요..

이 정도가 가능하다면 일반적인 2D library뿐만 아니라 덩치 큰 3D library도 가능합니다.

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

oprsystem의 이미지

음 DSP 에 포팅하셨다는 라이브러리가 SDL 인가요?
아니면 GGI 인가요?
곤란하시다면 답변 안주셔도 좋습니다.

많은 분들 덕분에 오늘 너무 큰 수확을 얻어서 기분이 무척 좋습니다.

감사합니다.

지금검토하는 바로는 GGI 쪽으로 기울고 있습니다.

아바타가 상당히 멋집니다.

황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을

xfree의 이미지

그래픽 라이브러리는 SDL이나 GGI, NanoGUI 등등 뒤지면 많이 나올텐데요. 여기서 OS 디팬던트 부분만 들춰내서 비디오 프레임버퍼 영역에 직접 뿌리도록 살짝 개조하면 될듯한데요.. 멀티 쓰래드나 이밴트 핸들링 이런 코드들은 걍... 삭제하구요. 자바꺼 배낄려면 스윙보다는 AWT(?)인가 기본적인것 가져다가 이것도 살짝 개조하면 될것 같네요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.