Opengl necessarily use winapi on windows for drawing graphics? [closed]
up vote
0
down vote
favorite
I know that in linux, opengl can work with video memory directly. Is this true for windows?
I'm not talking about the interaction of opengl and window manager. I am talking about drawing primitives, images, etc.
That is, the question is whether opengl uses the winapi functions for drawing shapes, or it implement thats functions, working directly with memory.
if it can bypass winapi, then how can i write similar native code to draw pixels in a windows window? (Without winapi or external shells)
opengl graphics
closed as unclear what you're asking by Nicol Bolas, Rabbid76, lagom, V-rund Puro-hit, Foo Nov 12 at 7:17
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
add a comment |
up vote
0
down vote
favorite
I know that in linux, opengl can work with video memory directly. Is this true for windows?
I'm not talking about the interaction of opengl and window manager. I am talking about drawing primitives, images, etc.
That is, the question is whether opengl uses the winapi functions for drawing shapes, or it implement thats functions, working directly with memory.
if it can bypass winapi, then how can i write similar native code to draw pixels in a windows window? (Without winapi or external shells)
opengl graphics
closed as unclear what you're asking by Nicol Bolas, Rabbid76, lagom, V-rund Puro-hit, Foo Nov 12 at 7:17
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
Drawing can be done using Windows (or Linux or whichever OS) API or using some direct-to-driver API. There are mainly two such "direct-APIs"; OpenGL (for most of OSs) or DirectX (only for Windows).
– Ripi2
Nov 12 at 0:42
1
No, OpenGL it doesn't rely on WinAPI. (But you need WinAPI to open & manage an OpenGL context.) It's probably not possible (or unreasonably hard) to bypass WinAPI.
– HolyBlackCat
Nov 12 at 0:56
"I know that in linux, opengl can work with video memory directly." It's not clear exactly what you mean by that. In what way does Linux specifically allow this?
– Nicol Bolas
Nov 12 at 3:39
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I know that in linux, opengl can work with video memory directly. Is this true for windows?
I'm not talking about the interaction of opengl and window manager. I am talking about drawing primitives, images, etc.
That is, the question is whether opengl uses the winapi functions for drawing shapes, or it implement thats functions, working directly with memory.
if it can bypass winapi, then how can i write similar native code to draw pixels in a windows window? (Without winapi or external shells)
opengl graphics
I know that in linux, opengl can work with video memory directly. Is this true for windows?
I'm not talking about the interaction of opengl and window manager. I am talking about drawing primitives, images, etc.
That is, the question is whether opengl uses the winapi functions for drawing shapes, or it implement thats functions, working directly with memory.
if it can bypass winapi, then how can i write similar native code to draw pixels in a windows window? (Without winapi or external shells)
opengl graphics
opengl graphics
edited Nov 12 at 3:38
Nicol Bolas
280k33461633
280k33461633
asked Nov 12 at 0:24
Daniel Holmes
12
12
closed as unclear what you're asking by Nicol Bolas, Rabbid76, lagom, V-rund Puro-hit, Foo Nov 12 at 7:17
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
closed as unclear what you're asking by Nicol Bolas, Rabbid76, lagom, V-rund Puro-hit, Foo Nov 12 at 7:17
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
Drawing can be done using Windows (or Linux or whichever OS) API or using some direct-to-driver API. There are mainly two such "direct-APIs"; OpenGL (for most of OSs) or DirectX (only for Windows).
– Ripi2
Nov 12 at 0:42
1
No, OpenGL it doesn't rely on WinAPI. (But you need WinAPI to open & manage an OpenGL context.) It's probably not possible (or unreasonably hard) to bypass WinAPI.
– HolyBlackCat
Nov 12 at 0:56
"I know that in linux, opengl can work with video memory directly." It's not clear exactly what you mean by that. In what way does Linux specifically allow this?
– Nicol Bolas
Nov 12 at 3:39
add a comment |
Drawing can be done using Windows (or Linux or whichever OS) API or using some direct-to-driver API. There are mainly two such "direct-APIs"; OpenGL (for most of OSs) or DirectX (only for Windows).
– Ripi2
Nov 12 at 0:42
1
No, OpenGL it doesn't rely on WinAPI. (But you need WinAPI to open & manage an OpenGL context.) It's probably not possible (or unreasonably hard) to bypass WinAPI.
– HolyBlackCat
Nov 12 at 0:56
"I know that in linux, opengl can work with video memory directly." It's not clear exactly what you mean by that. In what way does Linux specifically allow this?
– Nicol Bolas
Nov 12 at 3:39
Drawing can be done using Windows (or Linux or whichever OS) API or using some direct-to-driver API. There are mainly two such "direct-APIs"; OpenGL (for most of OSs) or DirectX (only for Windows).
– Ripi2
Nov 12 at 0:42
Drawing can be done using Windows (or Linux or whichever OS) API or using some direct-to-driver API. There are mainly two such "direct-APIs"; OpenGL (for most of OSs) or DirectX (only for Windows).
– Ripi2
Nov 12 at 0:42
1
1
No, OpenGL it doesn't rely on WinAPI. (But you need WinAPI to open & manage an OpenGL context.) It's probably not possible (or unreasonably hard) to bypass WinAPI.
– HolyBlackCat
Nov 12 at 0:56
No, OpenGL it doesn't rely on WinAPI. (But you need WinAPI to open & manage an OpenGL context.) It's probably not possible (or unreasonably hard) to bypass WinAPI.
– HolyBlackCat
Nov 12 at 0:56
"I know that in linux, opengl can work with video memory directly." It's not clear exactly what you mean by that. In what way does Linux specifically allow this?
– Nicol Bolas
Nov 12 at 3:39
"I know that in linux, opengl can work with video memory directly." It's not clear exactly what you mean by that. In what way does Linux specifically allow this?
– Nicol Bolas
Nov 12 at 3:39
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
I'm not sure what exactly you mean when you say
I know that in linux, opengl can work with video memory directly.
There is no fundamental difference in how OpenGL works on Linux vs how it works on Windows. On both, Windows as well as Linux, the OpenGL implementation is generally provided by an Installable Client Driver (ICD). The ICD interacts with the operating system via the display driver interface rather than the normal Windows API. While there are software implementations/emulation layers for OpenGL (Windows includes one by default), the ICD is typically delivered by the vendor of your graphics card. When using OpenGL, the operating system will simply load the ICD and your OpenGL API calls will basically go directly to the ICD which will then carry out the actual drawing. Typically, this will involve talking to the graphics card through proprietary protocols.
If you want to do some simple 3D graphics in software to learn how that works, I would suggest to just use the Windows API or whatever else you are comfortable with drawing pixels on the screen and start with doing some simple triangle rasterization. Writing your own OpenGL software implementation would certainly be possible but would most likely be massive overkill in terms of the amount of functionality you'd have to implement. While such a software rendering project can be great practice when the goal is to gain an understanding of the basics of how 3D graphics work, don't expect the result to be competitive in terms of performance. No matter what you do, a CPU software implementation will not even get close to the level of performance one typically expects of real applications on a modern device. To get there, you'd have to make use of the hardware acceleration that your GPU can provide. Writing your own OpenGL implementation that uses the GPU for hardware acceleration, however, is a humongous undertaking. There are working open source drivers for GPUs of all major vendors (AMD, Intel, NVIDIA) that you can look at if you really want to learn more…
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
I'm not sure what exactly you mean when you say
I know that in linux, opengl can work with video memory directly.
There is no fundamental difference in how OpenGL works on Linux vs how it works on Windows. On both, Windows as well as Linux, the OpenGL implementation is generally provided by an Installable Client Driver (ICD). The ICD interacts with the operating system via the display driver interface rather than the normal Windows API. While there are software implementations/emulation layers for OpenGL (Windows includes one by default), the ICD is typically delivered by the vendor of your graphics card. When using OpenGL, the operating system will simply load the ICD and your OpenGL API calls will basically go directly to the ICD which will then carry out the actual drawing. Typically, this will involve talking to the graphics card through proprietary protocols.
If you want to do some simple 3D graphics in software to learn how that works, I would suggest to just use the Windows API or whatever else you are comfortable with drawing pixels on the screen and start with doing some simple triangle rasterization. Writing your own OpenGL software implementation would certainly be possible but would most likely be massive overkill in terms of the amount of functionality you'd have to implement. While such a software rendering project can be great practice when the goal is to gain an understanding of the basics of how 3D graphics work, don't expect the result to be competitive in terms of performance. No matter what you do, a CPU software implementation will not even get close to the level of performance one typically expects of real applications on a modern device. To get there, you'd have to make use of the hardware acceleration that your GPU can provide. Writing your own OpenGL implementation that uses the GPU for hardware acceleration, however, is a humongous undertaking. There are working open source drivers for GPUs of all major vendors (AMD, Intel, NVIDIA) that you can look at if you really want to learn more…
add a comment |
up vote
2
down vote
I'm not sure what exactly you mean when you say
I know that in linux, opengl can work with video memory directly.
There is no fundamental difference in how OpenGL works on Linux vs how it works on Windows. On both, Windows as well as Linux, the OpenGL implementation is generally provided by an Installable Client Driver (ICD). The ICD interacts with the operating system via the display driver interface rather than the normal Windows API. While there are software implementations/emulation layers for OpenGL (Windows includes one by default), the ICD is typically delivered by the vendor of your graphics card. When using OpenGL, the operating system will simply load the ICD and your OpenGL API calls will basically go directly to the ICD which will then carry out the actual drawing. Typically, this will involve talking to the graphics card through proprietary protocols.
If you want to do some simple 3D graphics in software to learn how that works, I would suggest to just use the Windows API or whatever else you are comfortable with drawing pixels on the screen and start with doing some simple triangle rasterization. Writing your own OpenGL software implementation would certainly be possible but would most likely be massive overkill in terms of the amount of functionality you'd have to implement. While such a software rendering project can be great practice when the goal is to gain an understanding of the basics of how 3D graphics work, don't expect the result to be competitive in terms of performance. No matter what you do, a CPU software implementation will not even get close to the level of performance one typically expects of real applications on a modern device. To get there, you'd have to make use of the hardware acceleration that your GPU can provide. Writing your own OpenGL implementation that uses the GPU for hardware acceleration, however, is a humongous undertaking. There are working open source drivers for GPUs of all major vendors (AMD, Intel, NVIDIA) that you can look at if you really want to learn more…
add a comment |
up vote
2
down vote
up vote
2
down vote
I'm not sure what exactly you mean when you say
I know that in linux, opengl can work with video memory directly.
There is no fundamental difference in how OpenGL works on Linux vs how it works on Windows. On both, Windows as well as Linux, the OpenGL implementation is generally provided by an Installable Client Driver (ICD). The ICD interacts with the operating system via the display driver interface rather than the normal Windows API. While there are software implementations/emulation layers for OpenGL (Windows includes one by default), the ICD is typically delivered by the vendor of your graphics card. When using OpenGL, the operating system will simply load the ICD and your OpenGL API calls will basically go directly to the ICD which will then carry out the actual drawing. Typically, this will involve talking to the graphics card through proprietary protocols.
If you want to do some simple 3D graphics in software to learn how that works, I would suggest to just use the Windows API or whatever else you are comfortable with drawing pixels on the screen and start with doing some simple triangle rasterization. Writing your own OpenGL software implementation would certainly be possible but would most likely be massive overkill in terms of the amount of functionality you'd have to implement. While such a software rendering project can be great practice when the goal is to gain an understanding of the basics of how 3D graphics work, don't expect the result to be competitive in terms of performance. No matter what you do, a CPU software implementation will not even get close to the level of performance one typically expects of real applications on a modern device. To get there, you'd have to make use of the hardware acceleration that your GPU can provide. Writing your own OpenGL implementation that uses the GPU for hardware acceleration, however, is a humongous undertaking. There are working open source drivers for GPUs of all major vendors (AMD, Intel, NVIDIA) that you can look at if you really want to learn more…
I'm not sure what exactly you mean when you say
I know that in linux, opengl can work with video memory directly.
There is no fundamental difference in how OpenGL works on Linux vs how it works on Windows. On both, Windows as well as Linux, the OpenGL implementation is generally provided by an Installable Client Driver (ICD). The ICD interacts with the operating system via the display driver interface rather than the normal Windows API. While there are software implementations/emulation layers for OpenGL (Windows includes one by default), the ICD is typically delivered by the vendor of your graphics card. When using OpenGL, the operating system will simply load the ICD and your OpenGL API calls will basically go directly to the ICD which will then carry out the actual drawing. Typically, this will involve talking to the graphics card through proprietary protocols.
If you want to do some simple 3D graphics in software to learn how that works, I would suggest to just use the Windows API or whatever else you are comfortable with drawing pixels on the screen and start with doing some simple triangle rasterization. Writing your own OpenGL software implementation would certainly be possible but would most likely be massive overkill in terms of the amount of functionality you'd have to implement. While such a software rendering project can be great practice when the goal is to gain an understanding of the basics of how 3D graphics work, don't expect the result to be competitive in terms of performance. No matter what you do, a CPU software implementation will not even get close to the level of performance one typically expects of real applications on a modern device. To get there, you'd have to make use of the hardware acceleration that your GPU can provide. Writing your own OpenGL implementation that uses the GPU for hardware acceleration, however, is a humongous undertaking. There are working open source drivers for GPUs of all major vendors (AMD, Intel, NVIDIA) that you can look at if you really want to learn more…
edited Nov 12 at 3:23
answered Nov 12 at 1:24
Michael Kenzel
3,583719
3,583719
add a comment |
add a comment |
Drawing can be done using Windows (or Linux or whichever OS) API or using some direct-to-driver API. There are mainly two such "direct-APIs"; OpenGL (for most of OSs) or DirectX (only for Windows).
– Ripi2
Nov 12 at 0:42
1
No, OpenGL it doesn't rely on WinAPI. (But you need WinAPI to open & manage an OpenGL context.) It's probably not possible (or unreasonably hard) to bypass WinAPI.
– HolyBlackCat
Nov 12 at 0:56
"I know that in linux, opengl can work with video memory directly." It's not clear exactly what you mean by that. In what way does Linux specifically allow this?
– Nicol Bolas
Nov 12 at 3:39