1.NVIDIA Modulus 23.03安装和使用方法
2.java opengl
3.转载Celadon快速上路指南Part2:编译Celadon镜像
4.OpenGL选择什么版本比较好?
5.Linux如何配置nVIDIA显卡驱动
6.OpenGL中gltranslate()的源码函数代码,我会用这个函数,下载我要的源码是这个函数的实现代码
NVIDIA Modulus 23.03安装和使用方法
如果你对NVIDIA的Modulus .版本感兴趣,以下是下载你需要了解的安装和使用指南。从年开始,源码Modulus将进行重大更新,下载posfix源码安装建议直接从.版本开始,源码因为它将成为新开发的下载基础,旧版本将不再维护,源码所有功能将迁移至此。下载 Modulus .开源,源码可在GitHub获取。下载新版本主要由两个部分组成:Modulus包和modulus-sym包。源码sym包整合了大量API接口,下载以下是源码部分核心模块的导入示例: from modulus.sym.hydra import to_absolute_pathfrom modulus.sym.solver import Solver
from modulus.sym.domain import Domain
...
from modulus.sym.utils.io.plotter import ValidatorPlotter
安装步骤如下:首先,从GitHub下载modulus源代码,确保选择正确的版本,然后构建镜像:
#docker build -t modulus:ci --target ci -f Dockerfile .启动镜像,在其中安装modulus-sym:
#pip install .可能需要额外安装一些依赖,如:
sudo apt-get install libx-6sudo apt install libgl1-mesa-glx
sudo apt-get install libxrender1
完成以上步骤后,你就可以开始编写并运行Modulus .的代码了。对于进一步的技术交流和疑难解答,我们建议加入以下QQ群: 群名称:英伟达Modulus仿真技术交流(PINN)群号:
这里是一个活跃的社区,可以与同行分享经验和解决问题。祝你在使用Modulus .的过程中顺利!java opengl
java openglæ¯ä»ä¹ï¼è®©æ们ä¸èµ·äºè§£ä¸ä¸ï¼
openglæ¯ç¨äºæ¸²æ2Dã3Dç¢éå¾å½¢çè·¨è¯è¨ã跨平å°çåºç¨ç¨åºç¼ç¨æ¥å£ï¼APIï¼ãè¿ä¸ªæ¥å£ç±è¿ä¸ªä¸åçå½æ°è°ç¨ç»æï¼ç¨æ¥ç»å¶ä»ç®åçå¾å½¢æ¯ç¹å°å¤æçä¸ç»´æ¯è±¡ã
openglæä»ä¹ä½ç¨ï¼
1ãOpenGLçé«æå®ç°ï¼å©ç¨äºå¾å½¢å é硬件ï¼åå¨äºWindowsï¼é¨åUNIXå¹³å°åMac OSãè¿äºå®ç°ä¸è¬ç±æ¾ç¤ºè®¾å¤ååæä¾ï¼èä¸é常ä¾èµäºè¯¥ååæä¾ç硬件ãå¼æ¾æºä»£ç åºMesaæ¯ä¸ä¸ªçº¯åºäºè½¯ä»¶çå¾å½¢APIï¼å®ç代ç å ¼å®¹äºOpenGLãä½æ¯ï¼ç±äºè®¸å¯è¯çåå ï¼å®åªå£°ç§°æ¯ä¸ä¸ªâé常ç¸ä¼¼âçAPIã
2ãOpenGLè§èæè¿°äºç»å¶2Då3Då¾å½¢çæ½è±¡APIã尽管è¿äºAPIå¯ä»¥å®å ¨éè¿è½¯ä»¶å®ç°ï¼ä½å®æ¯ä¸ºå¤§é¨åæè å ¨é¨ä½¿ç¨ç¡¬ä»¶å éè设计çã
3ãOpenGLçAPIå®ä¹äºè¥å¹²å¯è¢«å®¢æ·ç«¯ç¨åºè°ç¨çå½æ°ï¼ä»¥åä¸äºå ·åæ´å常éï¼ä¾å¦ï¼å¸¸éGL_TEXTURE_2D对åºçåè¿å¶æ´æ°ä¸ºï¼ãè½ç¶è¿äºå½æ°çå®ä¹è¡¨é¢ä¸ç±»ä¼¼äºCç¼ç¨è¯è¨ï¼ä½å®ä»¬æ¯è¯è¨ç¬ç«çãå æ¤ï¼OpenGLæ许å¤è¯è¨ç»å®ï¼å¼å¾ä¸æçå æ¬ï¼JavaScriptç»å®çWebGLï¼åºäºOpenGL ES 2.0å¨Webæµè§å¨ä¸çè¿è¡3D渲æçAPIï¼ï¼Cç»å®çWGLãGLXåCGLï¼iOSæä¾çCç»å®ï¼Androidæä¾çJavaåCç»å®ã
4ãOpenGLä¸ä» è¯è¨æ å ³ï¼èä¸å¹³å°æ å ³ãè§èåªåæªæè·å¾å管çOpenGLä¸ä¸æç¸å ³çå 容ï¼èæ¯å°è¿äºä½ä¸ºç»è交ç»åºå±ççªå£ç³»ç»ãåºäºåæ ·çåå ï¼OpenGL纯粹ä¸æ³¨äºæ¸²æï¼èä¸æä¾è¾å ¥ãé³é¢ä»¥åçªå£ç¸å ³çAPIã
å®ææ¡ä¾ï¼å ·ä½ä»£ç å¦ä¸ï¼ package net.obviam.opengl; import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; public class Run extends Activity { undefined /** The OpenGL view */ private GLSurfaceView glSurfaceView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { undefined super.onCreate(savedInstanceState); // requesting to turn the title OFF requestWindowFeature(Window.FEATURE_NO_TITLE); // making it full screen getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); // Initiate the Open GL view and // create an instance with this activity glSurfaceView = new GLSurfaceView(this); // set our renderer to be the main renderer with // the current activity context glSurfaceView.setRenderer(new GlRenderer()); setContentView(glSurfaceView); } /** Remember to resume the glSurface */ @Override protected void onResume() { undefined super.onResume(); glSurfaceView.onResume(); } /** Also pause the glSurface */ @Override protected void onPause() { undefined super.onPause(); glSurfaceView.onPause(); } }
转载Celadon快速上路指南Part2:编译Celadon镜像
上一期我们向您介绍了如何安装Celadon预编译镜像(Celadon快速上路指南 Part1:安装Celadon镜像),本期我们将向您介绍如何建立Celadon的开发环境,编译制作您自己的Celadon镜像。
一、开发环境
虽然Android通常是用GNU/Linux或Mac OS操作系统构建的,但我们建议:如果要使用其他操作系统,请参考Android开源项目(AOSP)网站的构建环境部分:source.android.com/setu...
二、搭建开发环境
Celadon源码中有直接引用google代码仓库的部分,也有托管到github上的部分,每一个项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统一管理各个项目的Git仓库,需要一个上层工具批量进行处理。这里就不得不提强大的资讯特效源码repo工具了,repo是一种代码版本管理工具,repo init也会建立一个Git仓库,用来记录整个代码中的各个项目分别处于哪一个分支,这个仓库通常叫做manifest仓库。
1. 创建本地bin/目录,将repo工具下载到该目录,并使用以下命令给repo添加可执行权限:mkdir -p ~/bin curl storage.googleapis.com/... > ~/bin/repo chmod a+x ~/bin/repo
2. 此外,您需要在您的Ubuntu . LTS Bit开发工作站上安装以下软件包:sudo apt-get update sudo apt-get install \ openjdk-8-jdk git ccache automake \ lzop bison gperf build-essential \ zip tcl zlib1g-dev g++-multilib \ python-networkx libxml2-utils \ bzip2 libbz2-dev libbz2-1.0 \ libghc-bzlib-dev squashfs-tools \ pngcrush schedtool dpkg-dev \ liblz4-tool make optipng maven \ libssl-dev bc bsdmainutils \ gettext python-mako libelf-dev \ sbsigntool dosfstools mtools \ efitools git-lfs python-pystache \ git-core gnupg flex curl \ libc6-dev-i libncurses5-dev \ xproto-core-dev libx-dev \ libz-dev libgl1-mesa-dev \ libxml2-utils xsltproc unzip
三、下载源码
1. 创建一个空目录,用于保存Celadon的源文件,并用作工作目录。
2. URL指定Manifest,该Manifest里包含了Celadon所使用的各种git仓库。
3. 下载源代码到当前工作目录。
4. 如果您在中国大陆地区无法直接链接github,可以改为连接中国大陆地区的服务器,以连接清华服务器为例,您可以在~/.gitconfig中添加如下两行:[url " aosp.tuna.tsinghua.edu.cn..."] insteadOf = " android.googlesource.com..." 也可以export repo的URL地址 export REPO_URL=' mirrors.tuna.tsinghua.edu.cn...'
四、编译系统镜像
1.(可选)在Celadon的最顶层目录运行以下命令,用于删除之前产生的编译文件make clobber
2. 应用envsetup.sh脚本初始化编译的环境变量,source build/envsetup.sh
3. lunch target 示例 (也可以在lunch 的时候可以不带参数,手动选择target的编号) lunch celadon_ivi-userdebug
4. 编译生成Celadon安装程序文件,编译成功后,在out/的子目录下会有一个.zip格式的压缩安装包。
五、安装系统镜像
安装镜像方法请参考 Celadon快速上路指南 Part1:安装Celadon镜像
六、尾声
我们用了两篇文章向您介绍了如何下载、编译Celadon源码,和安装Celadon镜像的方法,您现在已经可以在您的NUC上使用Celadon了,但是搭载英特尔CPU的电脑还有很多,如何在更多的英特尔的平台上使用Celadon,这是Celadon团队目前正在着重解决的问题,我们的解决方案就是CaaS(Celadon As A Service)。之后我们会有系列文章来从各个角度来全面解析CaaS,希望它可以成为您的助力助您成功。敬请持续关注AndroidIA Celadon公众号信息,更多精彩还在路上。隐形boll源码您还可以选择加入“Celadon技术讨论群”,跟更多的Celadon技术人员直接交流。在该微信群建立的1小时之内人数就已经超过了人,无法直接扫码入群了。请扫码关注公众号留言“微信群”按照里面提示的方法来入群,或者您可以找到身边已经在群的小伙伴儿拉您入群。
OpenGL选择什么版本比较好?
选择默认的好,因为默认的话相对来说兼容性比较好,而且其次速度会比较快一些,如果随意的去改程序的话,可能会对效果各方面造成影响。简介
OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。
而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。
OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。
开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。
Linux如何配置nVIDIA显卡驱动
在图形芯片领域,nVidia是一个后来者,它的历史仅相当于ATi的一半。年初,NVIDIA 由 Jen-Hsun Huang,,Chris Malachowsky和 Curtis Priem 三人共同创办,但是,nVidia又一度是javames系统源码图形处理芯片领域的最强者,nVIDIA出品的Linux驱动安装软件工具包将自动检查计算机的各种细节,并能自动安装好各种驱动程序。这里介绍一下驱动安装、升级的简单过程。Linux系统自带的驱动程序只包括了nVIDIA 2D加速,如果需要获取更好的3D加速效果,需要安装nVIDIA专用驱动软件工具包。3D 硬件加速在需要绘制三度空间对象的时候是非常宝贵的,例如游戏、三维CAD、以及 3D 成像。本文应用环境是Red Had Enterprise Linux 4.0、nVIDIA显卡型号:华硕N/TD/M(AGP)。
一、准备工作
在配置nVIDIA显卡 之前, 您需要了解所安装的系统的下列信息:显示器规格,显示卡的芯片类型,显示卡的显存容量, 显示器的规格被 X 用来决定显示的分辨率和刷新率。这些规格通常可以从显示器所带的文档中, 以及制造商的网站找到。 需要知道两个数字范围:垂直刷新率和水平刷新率。 显示卡的芯片类型将决定 X 使用什么模块来驱动图形硬件。 绝大多数的硬件都能被自动检测,但是了解它在自动检测出错的时候还是很有用处的。显示卡的显存大小决定了系统支持的分辨率和颜色深度。了解这些限制非常重要。因为安装驱动程序可能需要配合核心来编译,所以会使用到内核源代码,此外,也需要编译器 ( compiler ) 的帮助,因此,先确定您的 Linux 系统当中已经下列软件的存在 :kernel-source 、kernel 、gcc 、make。 打开一个终端,使用命令检查:
# rpm -qa | grep gcc;rpm -qa | grep make;rpm -qa | grep kernel
如果没有3D API在开发程序时,程序员必须要了解全部的显卡特性,才能编写出与显卡完全匹配的程序,发挥出全部的网页换装源码显卡性能。而有了3D API这个显卡与软件直接的接口,程序员只需要编写符合接口的程序代码,就可以充分发挥显卡的不必再去了解硬件的具体性能和参数,这样就大大简化了程序开发的效率。 同样,显示芯片厂商根据标准来设计自己的硬件产品,以达到在API调用硬件资源时最优化,获得更好的性能。有了3D API,便可实现不同厂家的硬件、软件最大范围兼容。比如在最能体现3D API的游戏方面,游戏设计人员设计时,不必去考虑具体某款显卡的特性,而只是按照3D API的接口标准来开发游戏,当游戏运行时则直接通过3D API来调用显卡的硬件资源。 目前个人电脑中主要应用的3D API有DirectX和OpenGL。DirectX目前已经成为游戏的主流,市售的绝大部分主流游戏均基于DirectX开发,例如《帝国时代3》、《孤岛惊魂》、《使命召唤2》、《Half Life2》等流行的优秀游戏。而OpenGL目前则主要应用于专业的图形工作站,在游戏方面历史上也曾经和DirectX分庭抗礼,产生了一大批的优秀游戏,例如《Quake3》、《Half Life》、《荣誉勋章》的前几部、《反恐精英》等,目前在DirectX的步步进逼之下,采用OpenGL的游戏已经越来越少,但也不乏经典大作,例如基于OpenGL的《DOOM3》以及采用DOOM3引擎的《Quake4》等,无论过去还是现在,OpenGL在游戏方面的主要代表都是著名的ID Software。
·OpenGL
继DirectX后,OpenGL可说是下一个最受欢迎的3D API。其实OpenGL比DirectX存在的时间更久,相对于DirectX只可以应用在微软的平台,OpenGL则可以应用在很多不同的操作系统上。目前,大多数Linux下的3D加速游戏采用的都是OpenGL,因此对于nVIDIA最新的驱动程序,只需做很小的改动就可以适于大多数的游戏。Linux下的3D API是基于OpenGL的。OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。
OpenGL的英文全称是"Open Graphics Library",顾名思义,OpenGL便是"开放的图形程序接口"。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。 OpenGL是个与.硬件无关的软件接口,可以在不同的平台如Windows 、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS等3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。
OpenGL不是自由软件,它的版权、商标(OpenGL这个名字)都归SGI公司所有。但在Linux下有OpenGL的取代产品:Mesa。Mesa提供和OpenGL几乎完全一致的接口,对利用OpenGL API编程的人来说,几乎感觉不到任何差异。Mesa是遵循GPL协议(部分遵循LGPL协议)的自由软件,而且,正是由于Mesa的自由性,它在对新硬件的支持度等方面都超过了OpenGL。Mesa可以从www.mesa3d.org取得。在Linux下开发OpenGL程序,最常用的工具是GLUT(The OpenGL Utility Toolkit)。它可以创建一个或多个OpenGL窗口,响应、处理用户的交互操作、简单的弹出式菜单以及一些内置的绘图和字体处理功能。GLUT和OpenGL一样,可以移植于多种平台。由于它良好的表现,现在它已经成为Mesa发布的标准套件之一。
·DRI,全称 Direct Rendering Infrastructure,是 X 窗口系统里允许应用程序以一种安全有效的方式直接访问显示设备的框架。它包括对 X 服务器,某些X客户端库和内核的改动。DRI 的第一个主要应用是创建快速的 OpenGL 实现。DRI 是 XFree 4.x 以及其后继者 X.org 的组成部分,也是 Mesa -个 OpenGL API 的开源实现-的组成部分。有一些3D加速驱动是按照 DRI 标准写成的,包括 ATI,Matrox,3DFX 和 Intel。 DRI 最初是由 Precision Insight, Inc. (PI) 公司在 Red Hat Inc. 和 SGI 的合作和部分资助下开发的。随着 PI 被 VA Linux 所收购,以及后来 VA Linux 退出 Linux 领域,DRI 现在由Tungsten Graphics Inc.公司继续维护。该公司由当初 PI 公司的一些 DRI 开发者所创建。Tungsten Graphics 是目前所有 DRI 开发的焦点,许多开源开发者通过 sourceforge 上的 DRI 项目继续为 DRI 贡献代码。
二、命令行下载安装显卡驱动
1. 首先备份原配置文件
使用如下命令备份Xorg的配置文件(备份的文件名为xorg.conf.bak):
# cd /etc/X;cp ./xorg.conf ./xorg.conf.bak
2.测试安装3D驱动前的数据
首先测试安装3D驱动程序前的显卡速度,打开一个桌面终端运行。
#glxgears
glxgears是一个测试你的Linux是否可以顺利运行2D、3D的测试软件,这个程序弹出一个窗口,里面有三个转动的齿轮。屏幕将显示出每五秒钟转动多少栅,所以这是一个合理的性能测试。窗户是可以放缩的,栅数多少极大程度上依赖于窗口的大小。如果你的显示卡够好,而且你的驱动程序也配合得很好,那齿轮就跑得越快。有些极品显卡(nVIDIA GeForce GT)执行glxgears之后,快到连齿轮都看不清。这里请记录下FPS数字(每秒的帧速度)以鉴别驱动是否正常安装。 (电脑技术网站 网址:为您编辑)
早期Linux下nVidia的显示卡驱动有一个特点:所有显示卡可以使用相同的驱动程序。现在情况有所改变:由于nVIDIA公司的产品线非常长,所以需要根据你使用的显卡芯片型号选择合适的驱动程序(官方Linux驱动网址:/object/unix.html)。截至本文写作时最新版本的驱动程序是:。适合的显卡芯片:第四代GeForce显卡芯片到 GeForce XT。另外还要中央处理器型号选择驱动类型,使用位Intel Pentium4 、Pentium D 、CeleronD 中央处理器和位的AMD中央处理器使用Linux AMD/EMT驱动程序:IAnVIDIA-Linux-x_-1.0--pkg2.run ,其他X处理器使用IA驱动程序。本文以后者为例;但是如果你使用教老的显卡芯片比如:RIVA TNT、RIVA TNT2/TNT2 Pro 、RIVA TNT2 Ultra、Vanta/Vanta LT 、RIVA TNT2 Model /Model Pro、Aladdin TNT2 、GeForce 、 GeForce DDR 、Quadro 、GeForce2 GTS/GeForce2 Pro 、GeForce2 Ti 、 GeForce2 Ultra 、 Quadro2 Pro 。请使用以前的旧版本驱动程序:如。
3、命令行下安装过程:
·关闭SElinux
使用Fedora Core 3 、Fedora Core 4、Fedora Core 5 或Red Had Enterprise Linux 4 的用户要首先关闭SElinux,方法是修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启服务器。
·切换到命令行工作环境安装
因为NVIDIA的显卡驱动程序安装时X服务器不能运行。使用命令或组合键"Ctrl+shift+Backspace"退出X-window,进入命令行:
#wget /XFree/Linux-x/1.0-/NVIDIA-Linux-x-1.0--pkg1.run #init 3#.sh nVIDIA-Linux-x-1.0--pkg1.run
run 文件可以接收许多命令行参数,下面是一些比较常见的选项:
--info : 显示关于 .run 文件的内嵌信息并退出。
--check : 检查档案的完整性并退出。
--extract-only :仅解压 ./NVIDIA-Linux-x-1.0-.run但不运行。
--help : 显示普通命令行参数的用法后退出。
--advanced-options: 显示高级命令行参数的用法后退出。
说明:为了截图更加清晰笔者使用远程带来工具putty登录到Linux计算机进行驱动安装。
·安装详细步骤:
命令执行后是一个绿色为主的界面,询问是否接受协议件
选择"Accept"选项接受协议开始安装
安装完成后系统会提示是否使用nvidia-xconfig 命令更新当前配置,此时可以放心使用因为原配置是会自动备份的,选择"yes" 选项继续。
4.检测启用Nvidia 驱动程序的"快写"(FastWrite)和"边带寻址"(Side Band Addressing) 功能。
SBA"边带寻址",是指一种独立的地址和指令总线,图形控制芯片可以借助它来迅速地获取数据,而无需打断系统内存数据流的连续传输。为把AGP总线的传输效率与吞吐量都发挥到极致,AGP 2x协议把其中的地址总线从数据总线中单独分离了出来,在理论上是给AGP总线另添加了8条额外的边带线路。这8条额外的线路总称为边带地址端口(Sideband Address Port),简称为SBA。虽然SBA采用的是8位带宽的传输界面,但它允许图形控制芯片并行地向系统内存发出新的AGP数据请求和传输指令,同时又不干扰其他数据连续不断地通过AGP总线的主条地址数据传输线路(简称AD)。实际上,图形控制芯片也可以通过AD线路向系统内存发出新的AGP数据请求,不过这样一来,就会给AGP总线正常的数据传输增加负担,因此建议打开这8条额外的线路传输数据和指令请求。
AGP Fast Write:即AGP快写功能,开启后可以提高AGP的传输效能,让CPU不通过主内存而直接将数据写入显示卡的显存中,提高了效率。从这两个技术的分析中,我们都可以发现,边带寻址和快写功能对显卡性能的提升都一定的帮助。
想启用"快写"和"边带寻址"快写功能的前提是你的主板必须支持它,并且你要在 BIOS 中启用它,大部分主流主板支持。
(1) 查看主板支持情况使用命令:"cat /proc/driver/nvidia/agp/host-bridge"
(2) 在启用快写和边带寻址功能前请先确认你的显卡支持它。使用命令:"cat /proc/driver/nvidia/agp/card"
(3) 如果你的显卡支持快写和边带寻址请继续做: 编辑 /etc/modules.conf加入一行:
Options nvidia NVreg_EnableAGPSBA=1 NVreg_EnableAGPFW=1 NVreg_ReqAGPRATE=8
(4) 重新启动计算机
(5) 现在检查快写和边带寻址功能是启用状态(Enabled)还是禁用状态)(Disabled)。
使用命令:"cat /proc/driver/nvidia/agp/status"
启用"快写"和"边带寻址"可以帮助提高了虚幻竞技场, 雷神之锤3和其它第一人称视角射击游戏的 FPS数值。
到此为止我们在命令行下完成对nVIDIA显卡的驱动安装。
OpenGL中gltranslate()的函数代码,我会用这个函数,我要的是这个函数的实现代码
是这样的,你电脑上OpenGL的实现代码其实是不可能看到的,它是跟着显卡走的,应该在显卡驱动程序里(或许是用汇编实现的),这是我的认识。但并不是没有办法了,Mesa一直以开源的形式实现了OpenGL的一些接口,我们可以拿来学习和参考,比如你说的这个translate接口,其实就是一个模型矩阵运算问题,我摘抄了Mesa的m_matrix.c文件里的实现:
void _math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z ){
GLfloat *m = mat->m;
m[] = m[0] * x + m[4] * y + m[8] * z + m[];
m[] = m[1] * x + m[5] * y + m[9] * z + m[];
m[] = m[2] * x + m[6] * y + m[] * z + m[];
m[] = m[3] * x + m[7] * y + m[] * z + m[];
mat->flags |= (MAT_FLAG_TRANSLATION |
MAT_DIRTY_TYPE |
MAT_DIRTY_INVERSE);
}
Mesa的网址是www.mesa3d.org,你可以去down代码。