osgconv 导出 无纹理 大概率是 显卡版本对应的opengl接口太新 导致

osgconv 的操作:
   
   下面是 osgconv 的所有操作,可以通过下面的命令来查看:
    
     osgconv  --help

    使用用法:
      osgconv  [options] infile1 [infile2 ...] outfile 

    操作:

-O   ReadWrite选项

--compressed   压缩纹理

--compressed   启用压缩纹理

--compressed-arb   启用OPENGL ARB压缩纹理

--compressed-dxt1  启用S3TC DXT1压缩纹理  

--compressed-dxt3  启用S3TC DXT3压缩纹理

--compressed-dxt5  启用S3TC DXT5压缩纹理

这些压缩手段小米手机都不支持,不过一般的平板是支持的

基于OpenGL ES的压缩纹理有常见的如下几种实现:

1. ETC1(Ericcson texture compression)
2. PVRTC(PowerVR texture compression)
3. ATITC(ATI texture compression)
对于使用NVIDIA Tegra2芯片的手机如Motorola XOOM,ATRIX和DRIOID BIONIC则支持如下的纹理压缩
4. S3TC(S3 texture compression)

GPU“兼容性”

现在还有个经常被提到的是GPU的“兼容性”问题,这里就要涉及到各个GPU支持的纹理格式了。

首先是ETC1,这个是OPENGL ES 2.0支持的纹理格式,大家都得支持。但这个纹理的一个缺点是不支持alpha通道,所以对于有alpha通道的纹理,就要拆成2个纹理去读取,效率低,浪费了带宽。

而PVRTC是PowerVR自家的纹理格式,同样ATITC是高通Adreno的纹理格式,此外S3TC就是桌面很常见的DXT,微软DirectX 3D的纹理格式,这些都是支持alpha通道的。

        找到 对应的低版本 GPU 配合对应OSG版本 也进行 测试,同样导出对应的ive 模型 会丢失纹理,真不知道,原有ive 是怎么做到 纹理正常的呢。匪夷所思。!!!

        2023年3060显卡 要 模拟 12年前的 GT 610显卡的性能 太难搞了。 因为XP和WIN7环境下的GPU性能以及openGl 版本 都是老版本 ,但是现在开发环境几乎都是3060 都升级了好几代。为什么转换会丢失纹理。匪夷所思。

文章目录

  • 一、OpenGL支持库
    • 1、GLUT
    • 2、freeglut
    • 3、GLEW
    • 4、GLAD
    • 5、GLFW
    • 6、Mesa
  • 二、获取OpenGL版本号实现代码
    • 1、glut+glew
    • 2、win32+glew
    • 3、glfw+glad
    • 4、Android
    • 5、WebGL
  • 三、NVIDIA® Optimus™ 技术(双显卡切换技术)
    • 1、Optimus技术简介
    • 2、Optimus编程指南
    • 3、Application Profile Settings(上文第3种方法,NVAPI)
    • 4、Static Library Bindings(上文第4种方法,CUDA)
    • 5、Global Variable NvOptimusEnablement(上文第5种方法)
    • 6、设置垂直同步
  • 四、显卡驱动厂商
    • 1、NVIDIA
    • 2、AMD
    • 3、Intel
  • 五、显卡检测工具
    • 1、GPU Caps Viewer
    • 2、OpenGL Extensions Viewer
    • 3、dxdiag(系统自带)
    • 4、nvidia-smi(NVidia驱动)
  • 六、其他FAQ
    • 6.1 nvidiaopenglrdp.exe
  • 结语

一、OpenGL支持库

OpenGL依赖各平台提供用于渲染的context以及具体实现方式,而各平台提供的实现不尽相同。这些实现主要有:Windows平台下的WGL、Linux下的Mesa/GLX、Mac OS X下的Cocoa/NSGL,以及跨平台的GLUT、GLFW、SDL等等。

OpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux)、实用工具库(glut),窗口库(glx、agl、wgl)和扩展函数库等。

gl是核心,glu是对gl的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大(aux很大程度上已经被glut库取代。)。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。

        可以看出来,得益于HBM显存,显卡的带宽应该有比较显著的提升,如果确实达到这个标准,的确可以和1080一战,当然关于这两款在研的JM9231/JM9271,我没有在官网上找到太多资料(这点还是要吐槽一下,毕竟国货之光,怎么不在宣传和网站这方面多下点功夫呢)。

        以上是我们得到的一些硬件指标,这个问题问的是软件指标,也就是图形API的支持,这方面只能说。。。还很初级,目前景嘉微上市的几款主流GPU几乎都只支持OpenGL 1.3~1.5,也就是说,还在固定编程管线的年代,或者换句话说,从软件驱动的层面来看,国内厂商和世界顶级厂商的差距,可能是十五到二十年。JM5400已经有军用飞机的订单,那么我们的军工图形系统也不太可能有非常复杂的功能和图形效果,这方面我是外行,或许有更懂行的人能够解读这意味着什么。

        记得刚入职NVidia的第一天,我的经理教给我的第一个概念是tape outbring up,你可以认为它是芯片设计中依次进行的两个环节:前者代表的是一家厂商的硬件实力,是从芯片设计到流片的这个时间周期后者则是软件实力:已经流片的设计无法再造一次,所以流片之后所有性能优化,硬件设计缺陷修复,包括驱动支持,都可以叫做bring up。从耗时来看,bring up花的时间往往要比tape out更长。

        我在别的回答里也有说过,其实芯片设计是一个包含软硬件层面的系统工作,有时候软件层面的实力甚至要比硬件层面的实力更为重要,即使是强如华为这样的公司,在芯片设计的道路上,软件层面相比世界顶尖大厂也还相当欠缺。结合芯片代工的问题,国产光刻机90nm的精度也远未达到这类芯片的需求,只能说任重道远,诸君仍需努力。

DirectX 1.0

第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其流行的最大障碍。

DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能(比如:显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。第一代DirectX不包括所有的3D功能,还处于一个初级阶段。

DirectX 2.0

DirectX 2.0在二维图形方面做了些改进,增加了一些动态效果,采用了Direct 3D的技术。这样DirectX 2.0与DirectX 1.0有了相当大的不同。在DirectX 2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从DirectX 2.0开始,整个DirectX的设计架构雏形就已基本完成。

DirectX 3.0

DirectX 3.0的推出是在1997年最后一个版本的Windows95发布后不久,此时3D游戏开始深入人心,DirectX也逐渐得到软硬件厂商的认可。97年时应用程序接口标准共有三个,分别是专业的OpenGL接口,微软的DirectX D接口和3DFX公司的Glide接口。而那时的3DFX公司是最为强大的显卡制造商,它的Glide接口自然也受到最广泛的应用,但随着3DFX公司的没落,Voodoo显卡的衰败,Glide接口才逐渐消失了。

DirectX 3.0是DirectX 2.0的简单升级版,它对DirectX 2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。DirectX 3.0集成了较简单的3D效果,还不是很成熟。

DirectX 5.0

微软公司并没有推出DirectX 4.0,而是直接推出了DirectX 5.0。此版本对Direct3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,还加入了S3的纹理压缩技术

同时,DirectX 5.0在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,DirectX发展到DirectX 5.0才真正走向了成熟。此时的DirectX性能完全不逊色于其它3D API,而且大有后来居上之势。

DirectX 6.0

DirectX 6.0推出时,其最大的竞争对手之一Glide,已逐步走向了没落,而DirectX则得到了大多数厂商的认可。DirectX 6.0中加入了双线性过滤三线性过滤等优化3D图像质量的技术,游戏中的3D技术逐渐走入成熟阶段

DirectX 7.0

DirectX 7.0最大的特色就是支持T&L,中文名称是“坐标转换和光源”。3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。虽然OpenGL中已有相关技术,但此前从未在民用级硬件中出现。

在T&L问世之前,位置转换和灯光都需要CPU来计算,CPU速度越快,游戏表现越流畅。使用了T&L功能后,这两种效果的计算用显示卡的GPU来计算,这样就可以把CPU从繁忙的劳动中解脱出来。换句话说,拥有T&L显示卡,使用DirectX 7.0,即使没有高速的CPU,同样能流畅的跑3D游戏。

DirectX 8.0

DirectX 8.0的推出引发了一场显卡革命,它首次引入了“像素渲染”概念,同时具备像素渲染引擎(Pixel Shader)与顶点渲染引擎(Vertex Shader),反映在特效上就是动态光影效果。同硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。这意味着程序员可通过它们实现3D场景构建的难度大大降低。通过VS和PS的渲染,可以很容易的营造出真实的水面动态波纹光影效果。此时DirectX的权威地位终于建成。

DirectX 9.0

2002年底,微软发布DirectX9.0。DirectX 9中PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消。全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。

PS 2.0具备完全可编程的架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外PS1.4只能支持28个硬件指令,同时操作6个材质,而PS2.0却可以支持160个硬件指令,同时操作16个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现。

VS 2.0通过增加Vertex程序的灵活性,显著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前专用的单独着色程序,效率提高许多倍;增加循环操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。

增加对浮点数据的处理功能,以前只能对整数进行处理,这样提高渲染精度,使最终处理的色彩格式达到电影级别。突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。

DirectX 9.0c

与过去的DirectX 9.0b和Shader Model 2.0相比较,DirectX 9.0c最大的改进,便是引入了对Shader Model 3.0(包括Pixel Shader 3.0 和Vertex Shader 3.0两个着色语言规范)的全面支持。举例来说,DirectX 9.0b的Shader Model 2.0所支持的Vertex Shader最大指令数仅为256个,Pixel Shader最大指令数更是只有96个。而在最新的Shader Model 3.0中,Vertex Shader和Pixel Shader的最大指令数都大幅上升至65535个,全新的动态程序流控制位移贴图、多渲染目标(MRT)、次表面散射 Subsurface scattering、柔和阴影Soft shadows、环境和地面阴影Environmental and ground shadows、全局照明(Global illumination)等新技术特性,使得GeForce 6、GeForce 7系列以及Radeon X1000系列立刻为新一代游戏以及具备无比真实感、幻想般的复杂的数字世界和逼真的角色在影视品质的环境中活动提供强大动力。

因此DirectX 9.0c和Shader Model 3.0标准的推出,可以说是DirectX发展历程中的重要转折点。在DirectX 9.0c中,Shader Model 3.0除了取消指令数限制和加入位移贴图等新特性之外,更多的特性都是在解决游戏的执行效率和品质上下功夫,Shader Model 3.0诞生之后,人们对待游戏的态度也开始从过去单纯地追求速度,转变到游戏画质和运行速度两者兼顾。因此Shader Model 3.0对游戏产业的影响可谓深远。

DirectX 10.0

包含在Windows Vista操作系统中,无法单独下载使用。

新的DirectX使你获得更好的图像显示质量,使多人游戏可伸缩性,以及包括更棒的音频效果。它强化了针对DirectDraw和Direct3D的接口,简化了应用扩展,提升性能;改善了图形创作工具,更易于做出最佳的3-D角色和环境;点光源式光影和像素式光影使图象更逼真;强化了DirectSound和DirectMusic,简化了其应用扩展;DLS2音频合成功能提高了乐器音频的真实感;DirectInput的设备影射功能令对设备的支持更简单;DirectPlay使多人游戏的性能和可扩展性得到了提高; DirectPlay提供了IP声音通讯;DirectShow的应用编程接口提供了音频/视频的实时合成和即时编辑;DirectShow支持Windows媒体音频和视频(WMAWMV)的读写; Microsoft TV技术可以支持数字电视节目。当然,最重要的是一些新游戏需要它。DirectX Redist通常每两个月更新一次,包含了DirectX Runtimes的所有更新,可以替代此前发布的旧版本,适合Windows XPWindows Server 2003Windows Vista等操作系统,不支持Windows 9x/2000。一般最新的3D游戏等应用程序都需要新的DirectX接口,因此强烈推荐更新。

Vista DX10用户也同样需要。

显卡所支持的DirectX版本已成为评价显卡性能的标准,从显卡支持什么版本的DirectX,用户就可以分辨出显卡的性能高低,从而选择出适合于自己的显卡产品。

DirectX 10.1

正如以前的DX版本一样,DX10.1也是DX10的超集,因此它将支持DirectX 10的所有功能,同时它将支持更多的功能,提供更高的性能。

DX10.1的一个主要提高是改善的shader资源存取功能,在多样本AA时,在读取样本时有更好的控制能力。除此之外,DX10.1还将可以创建定制的下行采样滤波器

DX10.1还将有更新的浮点混合功能,对于渲染目标更有针对性,对于渲染目标混合将有新的格式,渲染目标可以实现独立的各自混合。阴影功能一直是游戏的重要特效,Direct3D 10.1 的阴影滤波功能也将有所提高,从而可望进一步提高画质。

在性能方面,DirectX 10.1将支持多核系统有更高的性能。而在渲染,反射和散射时,Direct3D 10.1将减少对API的调用次数,从而将获得不错的性能提升。

其他方面,DX10.1的提高也不少,包括32bit浮点滤波,可以提高渲染精确度,改善HDR渲染的画质。完全的抗锯齿应用程序控制也将是DX10.1的亮点,应用程序将可以控制多重采样和超级采样的使用,并选择在特定场景出现的采样模板。DX10.1将至少需要单像素四采样。

DX10.1还将引入更新的驱动模型,WDDM 2.1。与DX10的WDDM2.0相比,2.1有一些显著的提高。

首先是更多的内容转换功能,WDDM2.0支持处理一个命令或三角形后进行内容转换,而WDDM2.1则可以让内容转换即时进行。由于GPU同时要并行处理多个线程,因此内容转换的即时性不仅可以保证转换质量,还可以提升GPU效率,减少等待时间。另外,由于WDDM 2.1支持基于过程的虚拟内存分配,处理GPU和驱动页面错误的方式也更为成熟。

微软预计将在两周之内(2008年7月中旬)宣布新一代API:DirectX 11。消息来源指出,微软将在7月22日举办的Gamefest 2008上宣布新一代API,此前我们得到有关DirectX 11的最新消息NVIDIA将在八月末的“NVISION 08”会议上讲解DirectX 11。

微软举办的Gamefest 2008大会将于7月22-23日在西雅图召开,Gamefest 2008大会是微软每年一度的游戏技术探讨盛会,所以有关下一代游戏技术接口API的消息自然也是少不了的话题。

DirectX 11引入最大新技术特征无疑是Tessellation/Displacement,我们还听说了多线程渲染、Compute Shaders也将是DirectX 11中重要环节,另外据说DirectX 11还将引入Shader Model 5.0,具体细节信息尚不明确,Ray Tracing(光线跟踪)与Rasterization(光栅化)技术的支持也还没有提及。

DirectX 11

2009年1月9日星期五,微软将面向公众发布Windows 7客户端Beta 1测试版。而此前一天,即1月8日,微软将率先发布Windows 7服务器版本的Beta 1测试版。

微软发布的Windows 7Beta版本中,一些已经安装使用的用户的发现了DirectX 11已经包含其中了。DirectX 11作为3D图形接口,不仅支持未来的DX11硬件,还向下兼容当前的DirectX 10和10.1硬件。DirectX 11增加了新的计算shader技术,可以允许GPU从事更多的通用计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地将GPU作为并行处理器使用。

在微软发布的Windows 7 Beta版本中,已包含DirectX 11

另外,DirectX 11还支持tessellation镶嵌化技术,这有助于开发人员创建更为细腻流畅的模型,实现高质量实时渲染和预渲染场景。多线程是DirectX 11的另外一大亮点,DX11可以更好地利用多线程资源,从而使游戏更有效地利用多核处理器

DirectX 11.1

微软2011年10月15日公布了一份白皮书“Windows开发者预览版中的Windows驱动模型增强”,洋洋洒洒地深入介绍了Windows 8图形技术方面的改进。根据白皮书,Windows 8将会支持新版显示驱动模型WDDM1.2,高于Windows 7 WDDM 1.1,但同时会放弃对服务器系统中XDDM的支持,全部转向WDDM。

DirectX方面最关键的是当然引入Direct3D 11.1,同时还会有平滑旋转、立体3D、D3D11 Video等功能技术。微软称,即使是低端硬件,只要能够利用好DirectX的优势,也能够在Windows 8上来更好的性能。

DirectX 11.2

2013年6月28日,微软发布Directx11.2(Alpha版),其中一个重要特性是允许游戏使用系统内存和显存储存纹理数据,微软的Antoine Leblond在BUILD大会上演示了主要利用内存而不是显存去储存9GB纹理数据。这项特性对于未来的高清游戏具有重要意义。然而一个问题是,DirectX 11.2不支持Windows 8及之前操作系统,只支持Windows 8.1和下一代主机Xbox One

DirectX 12

2014年3月21日,微软正式发布了新一代的API DirectX 12 [1]  。虽然算不上全新设计,虽然细节公布得还不是特别多,但至少不是Mantle的直接翻版,还是有微软与合作伙伴设计的不少新东西的。DX12最重要的变化就是更底层API [4]  ,这一点很像AMD Mantle,在硬件抽象层上走得比以往更深入,能够同时减轻CPU、GPU的过载(overload)。具体包括:应用可追踪GPU流水线、控制资源状态转换(比如从渲染目标到纹理)、控制资源重命名,更少的API和驱动跟踪,可预判属性,等等。

另外,DX12大大提高了多线程效率,可以充分发挥多线程硬件的潜力。DX11在这方面受CPU性能的严重制约,主要是因为不能有效利用多核心。微软宣称,微软对多核心CPU的利用几乎是线性增长的,也就是说四核心能接近单核心的四倍。

此外还有渲染流水线、渲染特性、资源管理、命令列表与绑定、描述符跳跃等等方面的改进,因为主要是关于开发的,也比较深晦,这里就先不说太多了。

NVIDIA确认说,开普勒、费米、麦克斯韦架构全部都支持DX12,也就是GeForce 400系列以来的型号都可以,DX11的都行。

AMD则确认,GCN架构的所有显卡均支持DX12,也就是Radeon HD 7000、Radeon R200系列 [5]  。

Intel确认称,第四代Haswell可以支持DX12,但其实仅限最高端的两个型号:GT3 Iris 5100、GT3e Iris Pro 5200。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHP代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值