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)










share|improve this 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















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)










share|improve this 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













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)










share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 at 3:38









Nicol Bolas

281k33461636




281k33461636










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

















  • 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













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…






share|improve this answer





























    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…






    share|improve this answer


























      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…






      share|improve this answer
























        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…






        share|improve this answer














        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…







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 12 at 3:23

























        answered Nov 12 at 1:24









        Michael Kenzel

        3,688719




        3,688719













            這個網誌中的熱門文章

            How to read a connectionString WITH PROVIDER in .NET Core?

            In R, how to develop a multiplot heatmap.2 figure showing key labels successfully

            Museum of Modern and Contemporary Art of Trento and Rovereto