There are a number of Open Graphics Library® (OpenGL®) software development kits (SDKs) available, although many are geared specifically toward a certain use. The developers of graphics cards and hardware usually provide an OpenGL® SDK that is fairly complete in regards to code samples and documentation but which also might include features specific to hardware the company produces. Some SDKs focus on providing easy access to the OpenGL® abstract programming interface (API), usually focusing on a particular usage, such as molecular visualization, physics or interactive art. A more complete OpenGL® SDK can include a fully functioning framework or scenegraph that extends the functionality of the core API, though it also might have a steeper learning curve than a simpler SDK. A number of OpenGL® SDKs focus on providing high-performance graphics and algorithms that are best used for real-time animation, interactive three-dimensional (3D) environments or video games.
One important distinction to make is that an OpenGL® SDK is different from the OpenGL® API. The API is the basic interface required for writing and compiling an OpenGL® application. An OpenGL® SDK can be a collection of tools, source code, documents and libraries that can expand on the functionality of the API, include enhanced OpenGL® drivers or provide tools to make using the API easier. The developers of OpenGL® do not maintain any official OpenGL® SDKs, so all kits are written and developed by individual communities, programmers or companies, independent of the OpenGL® Architecture Review Board (ARB).
The best OpenGL® SDK will be one that is suited to the expertise of the programmer and not overly complex for the project. For simple projects, such as displaying the results of a function or algorithm, a basic mathematics SDK generally would be far more suitable than a kit provided by a graphics card manufacturer to focus on special features such as rendering translucent hair. Similarly, in some cases, the best SDK might be no SDK, because the basic drawing capabilities of OpenGL® are present with only the API.
In the case of large or interactive programs that might require a good amount of model loading and image manipulation, a fuller-featured OpenGL® SDK could be required. Both commercial and open source SDKs are available in different levels of complexity that can make many frequently used functions — such as constructing vertex buffer objects or timing animation — very easy to access. One complication with an SDK that implements something as large as a complete scenegraph, however, is that it will require a steep learning curve, because the code for the SDK might be very far removed from basic OpenGL® techniques.
The tools that come with an OpenGL® SDK sometimes might be important to help streamline development. These can include viewing programs to see how a scene or model will look when rendered with the SDK or plug-ins for commonly used modeling programs, which would allow files to be exported directly into formats usable by the SDK. In addition to tools, one feature of a good SDK will be proper documentation, as well as a community that is available to answer questions should they arise.