I was goofing around earlier today with OpenGL, trying to render 3D objects directly to the desktop. Couldn't figure it out, so I did some googling and comes to find out there's only 2 ways: choosing a transparent color or rendering to an offscreen buffer by dual-rendering with Mesa. But I also saw some remarks about being able to set the desktop as a rendering context, but if you render to it the computer will crash. For some godforsaken reason, Windows wants to be mamma bear of the memory and restrict the full capability of OpenGL. I have decided now, that I hate Microsoft.

But thats not the full reason for this topic. I happened to get bored and googled "how to build an os". Surprisingly, I found 2 open source examples written entirely in x86 assembly. The first was 16bit and fit within the 512 boot loader of the os. The second one I was more interested in is called MenuetOS. It's 32 bit, features multitasking and a full GUI interface, and have several programs already written for it (including a port of DOOM!!!). The only thing I'm not to sure about is that the 3D engine is something called Vesa, and I'm not entirely sure if that'll work on my pc yet. Anyways, I have my own ideas and don't really want to use either of the examples unless I have to. To be blunt, I'd prefer my os to use the same stack-method DCS uses because its simple and I've already written a cop-off in z80 before.

Thoughts, suggestions?
If you write your own operating system then you will need to write your own drivers for the various bits of hardware. There is no standard hardware interface for 3D (at least, not to my knowledge); there are standard software interfaces (OpenGL, Direct3D) but these are implemented on a per-card basis by the drivers written by by card manufacturers.

VESA is a standards body but 3D is not one of the things they have standardised. I think you are probably referring to VESA BIOS extensions, which are supported by most cards and will provide a standard interface for basic 2D operations (access to a linear frame buffer, accelerated bit blt etc). You would likely need to write a software renderer for 3D, though if you're set on OpenGL then Mesa 3D has a software renderer available.

I'm not sure what this ranting about "restricting the full capability of OpenGL" is (is "render arbitrary stuff to the desktop" a requirement for an OpenGL implementation?) though there are of course ways to appear to render stuff to the desktop: Layered Windows may provide one such solution.
That was one of my concerns, which is why I'm using the MenuetOS source code as a guide since they already got that stuff working.

Thanks for the info about VESA. I thought it was another type of semi-hardware 3d renderer. I'll have to try Mesa as well. Makes sense now Smile

My ranting was about being force to create windows to render to the screen. There are alot of cases where you'd want to do that without having to create a window.
Anakclusmos wrote:
My ranting was about being force to create windows to render to the screen. There are alot of cases where you'd want to do that without having to create a window.

Could you provide an example? Any graphical program will render to a window of some description under Windows.
Gadgets, System Monitoring, Splash screens, shells, and virtual pals like the ones used in the old MSWord
Gadgets draw to a window, system monitoring apps draw to a window, splash screens are (again) windows. Why do you think otherwise? They may hide the standard control box or make their backgrounds transparent but they are still regular windows.

I'm not sure what you mean by shells, though.
Indeed, gadgets draw to windows, system monitoring apps draw to windows, and as do splash screen, but that doesn't mean everyone wants them too. I'm talking about no border and no background without the cost of a particular color or the use of complicated offscreen rendering.

By shells, I mean custom desktop GUI's.
Haiku is the only operating system worth using.
Anakclusmos wrote:
Indeed, gadgets draw to windows, system monitoring apps draw to windows, and as do splash screen, but that doesn't mean everyone wants them too. I'm talking about no border and no background without the cost of a particular color or the use of complicated offscreen rendering.

By shells, I mean custom desktop GUI's.


So go make a window with no border or background color. That is totally supported. You are only ranting because apparently you completely don't understand what a window actually is. If you want to render to the screen, you make a window. If you don't want to render to the screen, you do offscreen rendering. It's really not hard or limiting at all. If you can't figure out how to do it, it's merely a lack of knowledge on your part, not a limitation of Windows.

As for writing an OS, note that you will not get hardware accelerated 3D with any OS you make, nor will you get it for *any* open source OS other than Linux and perhaps BSD, and only if you are using X11.

But if you wish to write an OS to mess around with (you will almost certainly never get to a usable desktop, fyi), checkout http://wiki.osdev.org/Main_Page
Indeed, to continue the points that Kllrnohj and benryves are trying to make, whether your graphics are in a window or not does not dictate whether you see a border and window buttons or not. Have you ever used WabbitEmu? Borderless, no window buttons, but it's certainly in a window. You just can't see a window. It seems a little extreme to want to write an entirely new OS for a modern computer, complex hardware interfacing and all, just because you can't figure out how to hide window borders. Razz
Kllrnohj wrote:
Anakclusmos wrote:
Indeed, gadgets draw to windows, system monitoring apps draw to windows, and as do splash screen, but that doesn't mean everyone wants them too. I'm talking about no border and no background without the cost of a particular color or the use of complicated offscreen rendering.

By shells, I mean custom desktop GUI's.


So go make a window with no border or background color. That is totally supported. You are only ranting because apparently you completely don't understand what a window actually is. If you want to render to the screen, you make a window. If you don't want to render to the screen, you do offscreen rendering. It's really not hard or limiting at all. If you can't figure out how to do it, it's merely a lack of knowledge on your part, not a limitation of Windows.

As for writing an OS, note that you will not get hardware accelerated 3D with any OS you make, nor will you get it for *any* open source OS other than Linux and perhaps BSD, and only if you are using X11.

But if you wish to write an OS to mess around with (you will almost certainly never get to a usable desktop, fyi), checkout http://wiki.osdev.org/Main_Page


I know how to do that, but Windows doesn't support a transparent background color. The most you can do there is set a certain color to be the transparent color for window, which I don't want to do because everything drawn in that color is transparent (including rendering done in OpenGL)

You obviously doesn't know what you're talking about either considering I have the source code to 2 x86 operating systems that aren't Linux or BSD already downloaded. (MikeOS and MenuetOS) There are communities for this type of thing just like there is here, you just have to look hard enough.


Besides, we need to get back on topic, this is about making an operating system for the pc, not ranting about the limitations of windows or whether or not you've believe I know what 2+2 is.



I've been putting alot of thought into the GUI. I want it to be unique, and easy on the eyes. I haven't decided yet, But this is one idea for a layout I drew up. I got the idea from the GameCube:

This is just one idea, I'm not sure if I'll stick with it yet. The icons for the desktop are 3d cubes with a 2d image for the front face. The first startmenu popup is the commonly used programs, and the second is the list of programs.

Style-wise, not rant about using 3d on the desktop-wise, what do you think?[/img]
Quote:
I've been putting alot of thought into the GUI. I want it to be unique, and easy on the eyes.


I can't say I'm anything close to an expert, but it seems to me that you have your priorities screwed up if you're designing the GUI before the actual OS.
I'm basing my source off MenuetOS, everything the needs to be done is pretty much done except the GUI. I just have add features.
Qwerty.55 wrote:
Quote:
I've been putting alot of thought into the GUI. I want it to be unique, and easy on the eyes.


I can't say I'm anything close to an expert, but it seems to me that you have your priorities screwed up if you're designing the GUI before the actual OS.
I am too lazy to actually make my own post so instead I quote people and then don't say anything new.

And before you call out others on not knowing what they are talking about, remember that those who have responded already are veteran coders, who have been doing this for years. I wouldn't instantly call them out because they disagree with your rant.

Edit: So you just want to design a window manager, not an OS. If you wanted to design an OS, you'd start from scratch, looking to others as inspiration, not using the bulk of the code from some other project.
I don't even know why I came back to Cemetech, I've got nothing but negativity. You can ask anyone who knows me personally that I do nothing but program from the second I open my eyes to the second I pass out from lack of sleep, and then dream on it. Its been my routine for almost 9 years, it's interfered with my education, I've missed holiday's and social event, and it's the reason why I say I have no life. Aside from what everyone may believe, I'm know more about it than most of the people on Cemetech. When I don't know something, I google it; if I still can't find it, I come here to get bitched at and hopefully figure it out in the process.

No, I don't want to design a window manager, I could care less if OpenGL was suddenly capable of projecting holograms through the computer screen and windows added a new feature to make anything you look at spontaneously combust. I found something I'm interested in, and nothing would be as satisfying for me as completing a project like this.
In addition to the operating systems you've already looked at I'd recommend you also took a look at LoseThos as that's very much designed with programming for fun in mind.

I presume your mock-up is three different views of the same desktop, not one wide one? The start menu idea sounds sensible to me (after all, it's what Windows does). Would there be any reason to make the icons 3D cubes other than aesthetics - maybe make them cuboids that grow taller the more frequently the underlying application is used to emphasise them or similar?
Finally someone with some positive input Smile
I'll take a look at LoseThos when I finish posting.

Yes, its 3 different views of the same desktop. The 3d icons is mainly a beauty thing, but I had several ideas for desktop animation like being able to to 'grab' a corner of the desktop and spin it, rearranging the icons into scrollable lists that flow offscreen. Another idea is to allow you to zoom in on and rotate cubes to display file information on the different surfaces.

EDIT:
Just took a look at LoseThos, I don't think I'll be able to use it because the processor for my pc is 32-bit. I think I read somewhere that operating systems boot in 16-bit mode and are then changed to 32-bit or 64-bit by the bootloader, but regardless LoseThos won't be possible on my pc Sad
Anakclusmos wrote:
I don't even know why I came back to Cemetech, I've got nothing but negativity. You can ask anyone who knows me personally that I do nothing but program from the second I open my eyes to the second I pass out from lack of sleep, and then dream on it. Its been my routine for almost 9 years, it's interfered with my education, I've missed holiday's and social event, and it's the reason why I say I have no life. Aside from what everyone may believe, I'm know more about it than most of the people on Cemetech.


Sad

Take a chill pill, Bill. No one is trying to undermine you. Perhaps the above patrons of Cemetech just didn't understand what you were exactly going for, and hence that's why they were like that. No one here has bad intentions; we just like to help people out with their understanding when we feel that misconceptions have arisen or they are in need of good advice. Please also understand that we don't care much about how long you've been programming; there's always someone out there that knows more than you about any given subject. The sooner you learn the virtue of humility, the sooner people here can help you and you can learn.
Anakclusmos wrote:
EDIT:
Just took a look at LoseThos, I don't think I'll be able to use it because the processor for my pc is 32-bit. I think I read somewhere that operating systems boot in 16-bit mode and are then changed to 32-bit or 64-bit by the bootloader, but regardless LoseThos won't be possible on my pc Sad

There are video demonstrations, but I was more providing it as an example of a simple operating system than something you'd necessarily want to run yourself. That said, are you sure your CPU is 32-bit? Even if you run a 32-bit OS you still might have a 64-bit CPU.
Ashbad:
You're obviously not around much, most people on this site do undermine me. Just saying that I said "most" not "all" people on Cemetech. I can say with full confidence it'll take me years to get to the level of Kerm, Ben Ryvess, Sircmpwn (now banned), and few other less active Cemetech members whose name's I can't quite remember.

Ben:
Nah, it's definately 32-bit. An old Dell Ispiron 9400.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 3
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement