Category: 

What Is 3D WebGL™?

Article Details
  • Written By: Eugene P.
  • Edited By: Angela B.
  • Last Modified Date: 10 September 2016
  • Copyright Protected:
    2003-2016
    Conjecture Corporation
  • Print this Article
Free Widgets for your Site/Blog
In late 19th-century London, mail was delivered to residential addresses up to twelve times each day.   more...

September 28 ,  1924 :  Two US military planes complete the first flights around the world.  more...

The Web-based Graphical Library (WebGL™) is an abstract programming interface (API) designed to allow the use of three-dimensional (3D) graphics directly in a web browser without the need for software or plug-ins separate from the core browser. The difference between 3D WebGL™ and other browser-based 3D graphical languages — such as the virtual reality markup language (VRML) — is that 3D WebGL™ allows direct access to the graphics processing unit (GPU) on the hardware display card present in the computer. Another difference is that 3D WebGL™ is not a separate language but an API implemented through the JavaScript® scripting language that is understood natively by nearly all web browsers. While this type of direct, low-level access to the hardware of the computer system is one of the strengths of WebGL™, it also is one of the larger problems, because it presents a series of security issues that are not easily solved.

One important development that has made 3D WebGL™ possible is the introduction of the canvas element in the HyperText Markup Language specification version 5 (HTML5). The canvas element allows low-level access to a viewport that can be drawn in and maintained in a style consistent with existing types of rendering APIs in other computer programming languages. The WebGL™ API works with this accelerated canvas to provide the ability to render complex scenes very quickly without having to rely on software emulation across different platforms or implementations.

Ad

The 3D WebGL™ API not only uses the canvas element, but also is based on the Open Graphics Library for Embedded Systems (OpenGL ES®). This is a portable version of the standard OpenGL® library that is designed to be portable not only between different computer operating systems, but also across any device that requires the use of low-level 3D graphics. This small footprint allows the library to be integrated into any browser for nearly any device.

The implementation of 3D WebGL™ permits the development of interactive programs that can be run directly from within a website or downloaded and run as a standalone application within the web browser. It can be used to create 3D video games, education software, simulations and 3D visualization software for business and scientific research. By using the browser as the wrapper application, the 3D environments can be developed without having to worry about repetitive boilerplate code for basic interfaces.

One of the largest drawbacks to using 3D WebGL™, and one that is preventing its widespread acceptance with certain software and hardware manufacturing companies, is the security risk it presents. The ability for a program to access the GPU can give a malicious program the ability to force the host computer system to execute harmful code. It also has been shown that denial of service (DOS) attacks are possible using the WebGL™ API. For this reason, there are some major computer companies that refuse to fully support WebGL™ in their products.

Ad

You might also Like

Recommended

Discuss this Article

Post your comments

exception 'Exception' with message 'error writing captcha: Duplicate entry '2147483647' for key 'PRIMARY'' in /ssd/www/wisegeek/public_html/_core/classes/public/Captcha.php:44
Stack trace:
#0 /ssd/www/wisegeek/public_html/_core/controls/public/ControlDiscussionPostBox.php(324): Captcha->createCaptcha()
#1 /ssd/www/wisegeek/public_html/framework/classes/Control.php(104): ControlDiscussionPostBox->preRender(false)
#2 /ssd/www/wisegeek/public_html/framework/classes/Control.php(149): Control->render()
#3 /ssd/www/wisegeek/public_html/tpl/default-nocustom-lu/pages/public/article/article.htm(526): Control->__toString()
#4 /ssd/www/wisegeek/public_html/framework/classes/Control.php(300): require('/ssd/www/wisege...')
#5 /ssd/www/wisegeek/public_html/framework/classes/Control.php(309): Control->requireTpl('pages/public/ar...', Object(PageArticleCom), true)
#6 /ssd/www/wisegeek/public_html/framework/classes/Control.php(131): Control->renderTpl('pages/public/ar...', Object(PageArticleCom))
#7 /ssd/www/wisegeek/public_html/framework/classes/FormDataControl.php(87): Control->renderTemplate()
#8 /ssd/www/wisegeek/public_html/framework/classes/Control.php(109): FormDataControl->renderTemplate()
#9 /ssd/www/wisegeek/public_html/framework/classes/ScriptPage.php(50): Control->render(false)
#10 /ssd/www/wisegeek/public_html/framework/classes/Control.php(149): ScriptPage->render()
#11 /ssd/www/wisegeek/public_html/framework/classes/Page.php(97): Control->__toString()
#12 /ssd/www/wisegeek/public_html/_core/classes/public/PublicFrontController.php(443): Page->processRequest()
#13 /ssd/www/wisegeek/public_html/_core/classes/public/PublicFrontController.php(7): PublicFrontController->renderPage()
#14 /ssd/www/wisegeek/public_html/index.php(11): PublicFrontController::run()
#15 {main}