Sign in to follow this  
coderx04

OpenGL Can I use OpenGL in borland?

Recommended Posts

coderx04    122
CAn I use opengl in borland C++ builder 6? because Im thinking I just do all the graphic and programming in borland, and I will do the networking with opengl. Is there any way I can use that? thanks

Share this post


Link to post
Share on other sites
Nik02    4348
It is not feasible to write networking components in OpenGL. However, OpenGL can be utilized as a graphics programming layer, using Borland's developer tools.

Share this post


Link to post
Share on other sites
Palidine    1315
openGL is graphics only. not only is it "difficult" to do networking in openGL, it is _impossible_. openGL != Directx. it is graphics only. for networking you'll have to find another API or just write your own basic stuff off of winsock. there are a number of good cross-platform networking libraries out there. look around in the network forum. libcurl comes to mind, only b/c i've used it at work, don't know how applicable it is for games.

-me

Share this post


Link to post
Share on other sites
Nik02    4348
While it is possible to write general purpose code that runs in the GPU (and interfaced via OpenGL), I see very little incentive to use the said API for the purpose of writing network code - OGL is meant to be a graphics interface, no more, no less.

I recognize the fact that very advanced/dedicated programmers can put the GPU to good use on some networking functions, as it is a parallel stream processor after all. I can't really recommend this for a beginner though [smile]

I second Winsock recommendation if your target platform is Windows.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
Quote:
Original post by Nik02
I recognize the fact that very advanced/dedicated programmers can put the GPU to good use on some networking functions, as it is a parallel stream processor after all. I can't really recommend this for a beginner though [smile]

I can't really recommend this at all. The emphasis lies on _stream_ processor, ie. it cannot generate data, it can only manipulate it. The GPU is a parallel vector processor, with very limited data interchange and random access capability, very limited flow control, and without direct writeback to system resources. That's all nice and fine for simple but massive parallel data manipulations that won't require complex dependencies between individual data elements. For example physical state simulation, neural nets, image recognition, cryptography, and so on.

But trying to write network processing code on a GPU would be, bluntly said, pretty retarded. The overhead would be insane. There's hardly anything less adapted to the parallel vector processing nature of a GPU, except for maybe a GPU based keyboard or mouse handler...

Pure networking code (ie. code interfacing with the network card) would be impossible anyway, because the GPU cannot access system IO resources, devices or mapped memory.

Share this post


Link to post
Share on other sites
Nik02    4348
Quote:
Original post by Anonymous Poster
physical state simulation, neural nets, image recognition, cryptography

All of those could be used in networking applications, especially in the context of network games. However, these are very advanced usage for the gpu anyway, hence not recommending them for a beginner. You're right, though, these are not just networking-related technologies in the strictest sense.

Quote:
Pure networking code (ie. code interfacing with the network card) would be impossible anyway, because the GPU cannot access system IO resources, devices or mapped memory.

True that. To read back the results of GPU calculations, the program would download the data back to system memory and proceed from there.

By the way, today's professional GPUs have very good programmability, flow control and such. It is possible to run quite complex programs even on per-fragment basis on, say, nVidia's Quadro FX series (and, to slightly lighter extent, on the current consumer models such as GF6 and GFFX series).

Share this post


Link to post
Share on other sites
khalligan    144
Quote:

CAn I use opengl in borland C++ builder 6?

because Im thinking I just do all the graphic and programming in borland, and I will do the networking with opengl.

Is there any way I can use that?
thanks



Im sorry but why anyone would want to use a Graphics API for Networking, just a bad idea. Use Direct-Play (whatever DirectX's networking game API is or Winsock (prob harder to use than DirectPlay as you need to write the handling code for the data you get in). Easily workable with OpenGL.

Ive used DirectInput, DirectSound with OpenGL, they work really well, no reason why DirectPlay is any different.

Personally though Id use Visual C++ 7.0 up (thats .NET), its very good by now.

Keith

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
Quote:

All of those could be used in networking applications, especially in the context of network games. However, these are very advanced usage for the gpu anyway, hence not recommending them for a beginner. You're right, though, these are not just networking-related technologies in the strictest sense.

Processing data received through a network link doesn't count as network processing. The data stream could come from anywhere. When talking about game related network processing, I thought more about things like lowlevel UDP packet scheduling, stream sync, error corrections, data prioritization. All things pretty impossible on a GPU (well, not impossible per se, but with an efficiency comparable of doing it by hand on a calculator...)

I mean, if not using UDP, there's not much about networking anyway. Everything is handled by the OS. Opening up a TCP stream is something like 5 lines of code. The main idea of a network library is to either handle it more low level (UDP, raw packets, whatever), or to provide an abstract (perhaps multi platform) interface to system dependent calls. HawkNL (formerly OpenNL, they got into trademark trouble) I linked to above does the former, and POSIX style sockets do the latter. Or just use Winsock if you neither care about speed nor multi platform compatibility.

Quote:

By the way, today's professional GPUs have very good programmability, flow control and such. It is possible to run quite complex programs even on per-fragment basis on, say, nVidia's Quadro FX series (and even on the current consumer models such as GF6800).

Compared to a modern CPU, programmability and flow control of todays GPUs are still ridiculous. But that's not their job. A GPUs job is to execute relatively simple programs at maximum speed and parallelism. Going further than that, you'd suddendly have a second CPU where your specialized GPU used to be. Not saying that this won't happen anyway in the future (multiple CPU cores with dynamic load balancing doing everything, ie. the return of the software renderer). But currently, that's not the case.

Woah, this thread went offtopic pretty fast.

Share this post


Link to post
Share on other sites
coderx04    122
Owww.. Soory because this is my first time using OPENGL. I were using Borland before .. And with my Profesor Library..

But his library doesnt support networking..
And borland builder really bad with networking..

So my question now change, Can i use directx in BORland C++ builder 6?

thanks for all your reply. ..

Share this post


Link to post
Share on other sites
Nik02    4348
Yes, you can. In case you decide to use d3d as well, in addition to DirectPlay, consider this (quoted from the DX SDK):

Quote:

Compilers from Borland report floating-point exceptions in a manner that is incompatible with Direct3D. To solve this problem, include a _matherr exception handler like the following:


// Borland floating point initialization
#include <math.h>
#include <float.h>

void initfp(void)
{
// Disable floating point exceptions
_control87(MCW_EM,MCW_EM);
}

int _matherr(struct _exception *e)
{
e; // Dummy reference to catch the warning
return 1; // Error has been handled
}



EDIT: Sorry for polluting the OpenGL board with DX stuff [smile]

Having said that, winsock and other networking libraries should work fine also - I don't really see a problem with Borland not supporting networking!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Similar Content

    • By Arulbabu Donbosco
      There are studios selling applications which is just copying any 3Dgraphic content and regenerating into another new window. especially for CAVE Virtual reality experience. so that the user opens REvite or CAD or any other 3D applications and opens a model. then when the user selects the rendered window the VR application copies the 3D model information from the OpenGL window. 
      I got the clue that the VR application replaces the windows opengl32.dll file. how this is possible ... how can we copy the 3d content from the current OpenGL window.
      anyone, please help me .. how to go further... to create an application like VR CAVE. 
       
      Thanks
    • By cebugdev
      hi all,

      i am trying to build an OpenGL 2D GUI system, (yeah yeah, i know i should not be re inventing the wheel, but this is for educational and some other purpose only),
      i have built GUI system before using 2D systems such as that of HTML/JS canvas, but in 2D system, i can directly match a mouse coordinates to the actual graphic coordinates with additional computation for screen size/ratio/scale ofcourse.
      now i want to port it to OpenGL, i know that to render a 2D object in OpenGL we specify coordiantes in Clip space or use the orthographic projection, now heres what i need help about.
      1. what is the right way of rendering the GUI? is it thru drawing in clip space or switching to ortho projection?
      2. from screen coordinates (top left is 0,0 nd bottom right is width height), how can i map the mouse coordinates to OpenGL 2D so that mouse events such as button click works? In consideration ofcourse to the current screen/size dimension.
      3. when let say if the screen size/dimension is different, how to handle this? in my previous javascript 2D engine using canvas, i just have my working coordinates and then just perform the bitblk or copying my working canvas to screen canvas and scale the mouse coordinates from there, in OpenGL how to work on a multiple screen sizes (more like an OpenGL ES question).
      lastly, if you guys know any books, resources, links or tutorials that handle or discuss this, i found one with marekknows opengl game engine website but its not free,
      Just let me know. Did not have any luck finding resource in google for writing our own OpenGL GUI framework.
      IF there are no any available online, just let me know, what things do i need to look into for OpenGL and i will study them one by one to make it work.
      thank you, and looking forward to positive replies.
    • By fllwr0491
      I have a few beginner questions about tesselation that I really have no clue.
      The opengl wiki doesn't seem to talk anything about the details.
       
      What is the relationship between TCS layout out and TES layout in?
      How does the tesselator know how control points are organized?
          e.g. If TES input requests triangles, but TCS can output N vertices.
             What happens in this case?
      In this article,
      http://www.informit.com/articles/article.aspx?p=2120983
      the isoline example TCS out=4, but TES in=isoline.
      And gl_TessCoord is only a single one.
      So which ones are the control points?
      How are tesselator building primitives?
    • By Orella
      I've been developing a 2D Engine using SFML + ImGui.
      Here you can see an image
      The editor is rendered using ImGui and the scene window is a sf::RenderTexture where I draw the GameObjects and then is converted to ImGui::Image to render it in the editor.
      Now I need to create a 3D Engine during this year in my Bachelor Degree but using SDL2 + ImGui and I want to recreate what I did with the 2D Engine. 
      I've managed to render the editor like I did in the 2D Engine using this example that comes with ImGui. 
      3D Editor preview
      But I don't know how to create an equivalent of sf::RenderTexture in SDL2, so I can draw the 3D scene there and convert it to ImGui::Image to show it in the editor.
      If you can provide code will be better. And if you want me to provide any specific code tell me.
      Thanks!
    • By Picpenguin
      Hi
      I'm new to learning OpenGL and still learning C. I'm using SDL2, glew, OpenGL 3.3, linmath and stb_image.
      I started following through learnopengl.com and got through it until I had to load models. The problem is, it uses Assimp for loading models. Assimp is C++ and uses things I don't want in my program (boost for example) and C support doesn't seem that good.
      Things like glVertexAttribPointer and shaders are still confusing to me, but I have to start somewhere right?
      I can't seem to find any good loading/rendering tutorials or source code that is simple to use and easy to understand.
      I have tried this for over a week by myself, searching for solutions but so far no luck. With tinyobjloader-c and project that uses it, FantasyGolfSimulator, I was able to actually load the model with plain color (always the same color no matter what I do) on screen and move it around, but cannot figure out how to use textures or use its multiple textures with it.
      I don't ask much: I just want to load models with textures in them, maybe have lights affect them (directional spotlight etc). Also, some models have multiple parts and multiple textures in them, how can I handle those?
      Are there solutions anywhere?
      Thank you for your time. Sorry if this is a bit confusing, English isn't my native language
  • Popular Now