正文:这是PDF编辑器平台打的广告,你关闭后再次打开就会显示你自己的PDF名称了。首先我们在手机中接受查看pdf文件需要使用到专业的PDF阅读器,这个时候就需要打开手机中的软件商店搜索pdf阅读器进行下载安装!将搜索到的轻快pdf阅读器安装在手机中。为什么选择这款PDF阅读器的原因是因为这款阅读器具有基本的编辑功能,在手机中使用这款阅读器可以对pdf文件进行编辑修改!打开安装完成的阅读器,进入到软件界面,通过右上角的添加按钮进入到文件添加界面,将需要查看的pdf文件添加到阅读器中。
文件添加完成后在阅读器首页即可查看到文件,每个文件名称后面都会有一个选项按钮(竖状三点形状)。点击名称后的三点举仿选项即可弹出“重命名”和“删除”选项,点击重命名即可修改文件名称。点击“删除”选项即可删除该文件,注:文件删除后不可恢复,请谨慎删除。如需要修改文件内容可点击文件名称进入到阅读界面,根据阅读界面右上角四个功能选项以及长按文字1-2秒即可编辑修改文字内容。操作环境:【华为手机鸿蒙OS20 手机版本号200208】
:
1、pdf是portable document format的缩写,意思是“便携式文档格式”。它是由此答侍 Adob_e Systems 开发的一种文件格式,用于独立于应用程序、操作系统和硬件的文件交换。 Pdf 文件基于 postscript 语言图像模型。无论使用何种打印机,都能保证准确的色彩和准确的打印效果,即PDF会忠实再现原稿的每一个字符、颜色和图像。便携式文件格式是一种电子文件格式。这种文件格式独立于操作系统平台,即PDF文件在windows、UNIX和Apple的Mac OS操作系统中很常见。这一特性使其成为互联网上电子文档分发和数字信息传播的理想文档格式。越来越多的电子书、产品说明、公司公告、网络资料和电子邮件开始使用PDF文件。
2、Adobe设计了PDF文件格式来支持跨平台多媒体综合信息的发布和发布,特别是为网络信息发布提供支持。为了实现这一目标,PDF具有许多其他电子文档格式无法比拟的优势。 pdf文件格式可以将与设备和分辨率无关的文本、字体、格式、颜色以及图形和图像封装在一个文件中。格式文件还可以包含电子信息,例如超文本链接、声音和动态图像。支持专业文件,集成度高,安全可靠。
3、对于普通读者来说,PDF制作的电子书具有纸质书的质感和阅读效果,能够真实呈现原书原貌,并且可以任意调整显示尺寸,为读者提供个性化的阅读方式。技术要点pdf主要由三种技术组成。派生自postscript生成和输出图形;pdf标志系统内嵌字体,字体随文件传输;结构化存储系统将这些元素和任何相关内容绑定到单个文件中,并带有适当的数据压缩系统。Pdf 文件使用行业标准压缩算法,通常比 postscript 文件更小,易于传输和存储。它也是页面独立的。一个PDF文件包含一个或多个“页面”,可以单独处理每一森吵页,特别适合多处理器系统的工作。此外,一个PDF文件还包含文件中使用的PDF版本以及文件中一些重要结构的定位信息。由于其优势,PDF逐渐成为出版行业的新宠。
什么是OpeenGL
系统更新下,由于SHA-1算法存在缺陷,微软将迎合行业标准,仅使用更安全的SHA-2算法来签署Windows更新。
SHA-2,名称来自于安全散列算法2(英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准,由美国国家安全局研发,由美国国家标准与技术研究院(NIST)在2001年发布。属于SHA算法之一,是SHA-1的后继者。其下又可再分为六个不同的算法标准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。
NIST发布了三个额外的SHA变体,这三个蔽此函数都将消息对应到更长的消息摘要。以它们的摘要长度(以比特计算)加在原名银谨后面来命名:SHA-256,SHA-384和SHA-512。它们发布于2001年的FIPS PUB 180-2草稿中,随即通过审查和评论。
包含SHA-1的FIPS PUB 180-2,于2002年以官方标准发布。2004年2月,发布了一次FIPS PUB 180-2的变更通知,加锋并基入了一个额外的变种SHA-224,这是为了匹配双密钥3DES所需的密钥长度而定义。
OpenGL目录
概述
Open GL现状
高级功能
OpenGL编程入门
OpenGL与DirectX的区别
概述
OpenGL - 高性能图形算法行业标准
OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现誉春尺在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面庆高领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于OpenGL是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS/3DSMAX等3D图形设计软件制作的DXF和3DS模型文件转换成OpenGL的顶点数组。
在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open Inventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。
OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。1992年7月,SGI公司发布了OpenGL的10版本,随后又与微软公司共同开发了Windows NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL的11版本面市,该版本比10的性能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。OpenGL 15又新增了“OpenGL Shading Language”,该语言是“OpenGL 20”的底核,用于着色对象、顶点着色以及片断着色技术的扩展功能。
OpenGL 20标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3DLabs。20版本首先要做的是与旧版本之间的完整兼容性,同时在顶点与像素及内存管理上与DirectX共同合作以维持均势。OpenGL 20将由OpenGL 13的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出森或的各种纠缠不清的扩展指令集做一次彻底的精简。此外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。
目前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的20版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商的用户的认知程度并不高,未来的OpenGL发展前景迷茫。
[编辑本段]Open GL现状
Open GL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已经不再以任何让微软不悦的方式推广Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用Open GL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用; Open GL在这些领域占据着统治地位。最后,开放源码社区(尤其是Mesa项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供Open GL支持。
今年08年正式公布OpenGL30版本。并且得到了,nv的支持,其官方网站上提供针对N卡的sdk下载。
[编辑本段]高级功能
OpenGL被设计为只有输出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其它输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API实现:
GLX - X11(包括透明的网络)
WGL - Microsoft Windows
AGL - Apple MacOS
另外,GLUT库能够以可移植的方式提供基本的窗口功能。
[编辑本段]OpenGL编程入门
OpenGL作图非常方便,故日益流行,但对许多人来说,是在微机上进行的,首先碰到的问题是,如何适应微机环境。这往往是最关键的一步,虽然也是最初级的。一般的,我不建议使用glut 包那样难以充分发挥 windows 的界面上的功能
下面介绍如何在 VC++ 上进行 OpenGL 编程。 OpenGL 绘图的一般过程可以看作这样的,先用 OpenGL 语句在 OpenGL 的绘图环境 RenderContext (RC)中画好图, 然后再通过一个 Swap buffer 的过程把图传给操作系统的绘图环境 DeviceContext (DC)中,实实在在地画出到屏幕上
下面以画一条 Bezier 曲线为例,详细介绍VC++ 上 OpenGL编程的方法。文中给出了详细注释,以便给初学者明确的指引。一步一步地按所述去做,你将顺利地画出第一个 OpenGL 平台上的图形来。
一、产生程序框架 Testdsw
New Project | MFC Application Wizard (EXE) | "Test" | OK
注 : 加“”者指要手工敲入的字串
二、导入 Bezier 曲线类的文件
用下面方法产生 BezierCurveh BezierCurvecpp 两个文件:
WorkSpace | ClassView | Test Classes| <右击弹出> New Class | Generic Class(不用MFC类) | "CBezierCurve" | OK
三、编辑好 Bezier 曲线类的定义与实现
写好下面两个文件:
BezierCurveh BezierCurvecpp
四、设置编译环境:
1 在 BezierCurveh 和 TestViewh 内各加上:
#include <GL/glh>
#include <GL/gluh>
#include <GL/glauxh>
2 在集成环境中
Project | Settings | link | Object/library module | "opengl32lib glu32lib glauxlib" | OK
五、设置 OpenGL 工作环境:(下面各个操作,均针对 TestViewcpp )
1 处理 PreCreateWindow(): 设置 OpenGL 绘图窗口的风格
csstyle |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CS_OWNDC;
2 处理 onCreate():创建 OpenGL 的绘图设备。
OpenGL 绘图的机制是: 先用 OpenGL 的绘图上下文 Rendering Context (简称为 RC )把图画好,再把所绘结果通过 SwapBuffer() 函数传给 Window 的 绘图上下文 Device Context (简记为 DC)要注意的是,程序运行过程中,可以有多个 DC,但只能有一个 RC。因此当一个 DC 画完图后,要立即释放 RC,以便其它的 DC 也使用。在后面的代码中,将有详细注释。
int CTestView::onCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::onCreate(lpCreateStruct) == -1)
return -1;
myInitOpenGL();
return 0;
}
void CTestView::myInitOpenGL()
{
m_pDC = new CClientDC(this); //创建 DC
ASSERT(m_pDC != NULL);
if (!mySetupPixelFormat()) //设定绘图的位图格式,函数下面列出
return;
m_hRC = wglCreateContext(m_pDC->m_hDC);//创建 RC
wglMakeCurrent(m_pDC->m_hDC, m_hRC); //RC 与当前 DC 相关联
} //CClient m_pDC; HGLRC m_hRC; 是 CTestView 的成员变量
BOOL CTestView::mySetupPixelFormat()
{//我们暂时不管格式的具体内容是什么,以后熟悉了再改变格式
static PIXELFORMATDEscriptOR pfd =
{
sizeof(PIXELFORMATDEscriptOR), // size of this pfd
1, // version number
PFD_DRAW_TO_WINDOW | // support window
PFD_SUPPORT_OPENGL | // support OpenGL
PFD_DOUBLEBUFFER, // double buffered
PFD_TYPE_RGBA, // RGBA type
24, // 24-bit color depth
0, 0, 0, 0, 0, 0, // color bits ignored
0, // no alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accum bits ignored
32, // 32-bit z-buffer
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main layer
0, // reserved
0, 0, 0 // layer masks ignored
};
int pixelformat;
if ( (pixelformat = ChoosePixelFormat(m_pDC->m_hDC, &pfd)) == 0 )
{
MessageBox("ChoosePixelFormat failed");
return FALSE;
}
if (SetPixelFormat(m_pDC->m_hDC, pixelformat, &pfd) == FALSE)
{
MessageBox("SetPixelFormat failed");
return FALSE;
}
return TRUE;
}
3 处理 onDestroy()
void CTestView::onDestroy()
{
wglMakeCurrent(m_pDC->m_hDC,NULL); //释放与m_hDC 对应的 RC
wglDeleteContext(m_hRC); //删除 RC
if (m_pDC)
delete m_pDC; //删除当前 View 拥有的 DC
CView::onDestroy();
}
4 处理 onEraseBkgnd()
BOOL CTestView::onEraseBkgnd(CDC pDC)
{
// TODO: Add your message handler code here and/or call default
// return CView::onEraseBkgnd(pDC);
//把这句话注释掉,若不然,Window
//会用白色北景来刷新,导致画面闪烁
return TRUE;//只要空返回即可。
}
5 处理 onDraw()
void CTestView::onDraw(CDC pDC)
{
wglMakeCurrent(m_pDC->m_hDC,m_hRC);//使 RC 与当前 DC 相关联
myDrawScene( ); //具体的绘图函数,在 RC 中绘制
SwapBuffers(m_pDC->m_hDC);//把 RC 中所绘传到当前的 DC 上,从而
//在屏幕上显示
wglMakeCurrent(m_pDC->m_hDC,NULL);//释放 RC,以便其它 DC 进行绘图
}
void CTestView::myDrawScene( )
{
glClearColor(00f,00f,00f,10f);//设置背景颜色为黑色
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslated(00f,00f,-30f);//把物体沿(0,0,-1)方向平移
//以便投影时可见。因为缺省的视点在(0,0,0),只有移开
//物体才能可见。
//本例是为了演示平面 Bezier 曲线的,只要作一个旋转
//变换,可更清楚的看到其 3D 效果。
//下面画一条 Bezier 曲线
bezier_curvemyPolygon();//画Bezier曲线的控制多边形
bezier_curvemyDraw(); //CBezierCurve bezier_curve
//是 CTestView 的成员变量
//具体的函数见附录
glPopMatrix();
glFlush(); //结束 RC 绘图
return;
}
6 处理 onSize()
void CTestView::onSize(UINT nType, int cx, int cy)
{
CView::onSize(nType, cx, cy);
VERIFY(wglMakeCurrent(m_pDC->m_hDC,m_hRC));//确认RC与当前DC关联
w=cx;
h=cy;
VERIFY(wglMakeCurrent(NULL,NULL));//确认DC释放RC
}
7 处理 onLButtonDown()
void CTestView::onLButtonDown(UINT nFlags, CPoint point)
{
CView::onLButtonDown(nFlags, point);
if(bezier_curvem_N>MAX-1)
{
MessageBox("顶点个数超过了最大数MAX=50");
return;
}
//以下为坐标变换作准备
GetClientRect(&m_ClientRect);//获取视口区域大小
w=m_ClientRectright-m_ClientRectleft;//视口宽度 w
h=m_ClientRectbottom-m_ClientRecttop;//视口高度 h
//w,h 是CTestView的成员变量
centerx=(m_ClientRectleft+m_ClientRectright)/2;//中心位置,
centery=(m_ClientRecttop+m_ClientRectbottom)/2;//取之作原点
//centerx,centery 是 CTestView 的成员变量
GLdouble tmpx,tmpy;
tmpx=scrx2glx(pointx);//屏幕上点坐标转化为OpenGL画图的规范坐标
tmpy=scry2gly(pointy);
bezier_curvem_Vertex[bezier_curvem_N]x=tmpx;//加一个顶点
bezier_curvem_Vertex[bezier_curvem_N]y=tmpy;
bezier_curvem_N++;//顶点数加一
InvalidateRect(NULL,TRUE);//发送刷新重绘消息
}
double CTestView::scrx2glx(int scrx)
{
return (double)(scrx-centerx)/double(h);
}
double CTestView::scry2gly(int scry)
{
}
附录:
1CBezierCurve 的声明: (BezierCurveh)
class CBezierCurve
{
public:
myPOINT2D m_Vertex[MAX];//控制顶点,以数组存储
//myPOINT2D 是一个存二维点的结构
//成员为Gldouble x,y
int m_N; //控制顶点的个数
public:
CBezierCurve();
virtual ~CBezierCurve();
void bezier_generation(myPOINT2D P[MAX],int level);
//算法的具体实现
void myDraw();//画曲线函数
void myPolygon(); //画控制多边形
};
2 CBezierCurve 的实现: (BezierCurvecpp)
CBezierCurve::CBezierCurve()
{
m_N=4;
m_Vertex[0]x=-05f;
m_Vertex[0]y=-05f;
m_Vertex[1]x=-05f;
m_Vertex[1]y=05f;
m_Vertex[2]x=05f;
m_Vertex[2]y=05f;
m_Vertex[3]x=05f;
m_Vertex[3]y=-05f;
}
CBezierCurve::~CBezierCurve()
{
}
void CBezierCurve::myDraw()
{
bezier_generation(m_Vertex,LEVEL);
}
void CBezierCurve::bezier_generation(myPOINT2D P[MAX], int level)
{ //算法的具体描述,请参考相关书本
int i,j;
level--;
if(level<0)return;
if(level==0)
{
glColor3f(10f,10f,10f);
glBegin(GL_LINES); //画出线段
glVertex2d(P[0]x,P[0]y);
glVertex2d(P[m_N-1]x,P[m_N-1]y);
glEnd();//结束画线段
return; //递归到了最底层,跳出递归
}
myPOINT2D Q[MAX],R[MAX];
for(i=0;i {
Qx=Px;
Qy=Py;
}
for(i=1;i<m_N;i++)
{
R[m_N-i]x=Q[m_N-1]x;
R[m_N-i]y=Q[m_N-1]y;
for(j=m_N-1;j>=i;j--)
{
Q[j]x=(Q[j-1]x+Q[j]x)/double(2);
Q[j]y=(Q[j-1]y+Q[j]y)/double(2);
}
}
R[0]x=Q[m_N-1]x;
R[0]y=Q[m_N-1]y;
bezier_generation(Q,level);
bezier_generation(R,level);
}
void CBezierCurve::myPolygon()
{
glBegin(GL_LINE_STRIP); //画出连线段
glColor3f(02f,04f,04f);
for(int i=0;i<m_N;i++)
{
glVertex2d(m_Vertexx,m_Vertexy);
}
glEnd();//结束画连线段
}
[编辑本段]OpenGL与DirectX的区别
OpenGL 只是图形函数库。
DirectX 包含图形, 声音, 输入, 网络等模块。
OpenGL稳定,可跨平台使用。DirectX仅能用于Windows系列平台,包括Windows Mobile/CE系列以及XBOX/XBOX360。
----------------------------------------------------------------------------------------------
1995年至1996年,微软实行了一项新计划,以支持在Windows95上运行游戏,目标是把市场扩展到被任天堂和世嘉控制的游戏领域。然而,微软不想用已经在NT上提供的OpenGL技术。微软收购了Rendermorphics,Ltd并得到他的被称作RealityLab的3D API。经重新整理,微软发布了新的3D API——Direct3D。
微软,推行Direct3D,冻结OpenGL!
微软当时拒绝了在Window95上支持OpenGL。不止如此,微软采取异常手段收回对OpenGL的MCD驱动接口的支持,以致硬件厂商不得不放弃已经进入最后测试的OpenGL驱动。微软的市场部门开始向游戏开发商、硬件厂商、新闻出版机构推销Direct3D,同时排斥OpenGL。
API之战!
Silicon Graphics和很多OpenGL用户都依赖OpenGL创新且高性能的技术。但很明显微软打算用Direct3D代替OpenGL,尽管D3D有很多问题而且不能像OpenGL那样被硬件厂商扩展。Silicon Graphics决定在1996 SIGGRAPH会议上作一项演示。演示证明OpenGL至少和D3D一样快,从而驳倒微软的市场论调。因为OpenGL是业界公认标准,比D3D功能丰富,而且图像质量要高一些,所以演示在计算机图形和游戏开发社区导致了激烈论战。
游戏开发者要求OpenGL和D3D站在同等地位!
当技术和市场问题暴露,强烈的支持OpenGL行动开始了。Doom的开发者John Carmack声明拒绝D3D,Chris Hecker在游戏开发杂志上发表了两套API的全面分析,移微软应放弃D3D为结论。游戏开发者先后两次向微软递交请愿书。第一次由56名首席游戏开发者要求微软发行OpenGL MCD驱动,但未成功,因为会让OpenGL与D3D竞争。第二次的公开信由254人签名开始,截止时达到1400人。微软的回答仍是重申旧市场立场。尽管请愿者清楚的要求两套API同等竞争以促进发展,微软却以增加D3D的投资、更加减少OpenGL的投资为回应。
Fahrenheit——D3D与OpenGL的合并?
Silicon Graphics,Microsoft, HP,Intel达成协议联合开发下一代3D API——Fahrenheit。但不了了之,因为微软的打算是把OpenGL的技术用到D3D里并且以此之名驱除OpenGL的威胁。(估计DirectX 8 Graphics即是剩下微软独自开发的Fahrenheit,吸收了OpenGL的很多东西。)
OpenGL豪气不减当年!
OpenGL依然是唯一能与微软单独控制的D3D对立的API,尽管Silicon Graphics不再以任何微软不能接受的方式推行OpenGL。游戏开发这是独立的,并且很多关键人物在用OpenGL,因此,硬件厂商正努力提高对其支持。D3D仍不能支持高端图像和专业应用,而OpenGL主宰着这些土地。在开放原码社区,Mesa项目正提供独立于微软的OpenGL驱动。
译者注:表面上好像D3D比OpenGL支持更多的功能,其实由于D3D不支持硬件扩展,如硬件全景阴影,硬件渲染顺序无关半透明材质等新技术根本无法使用,而D3D(特指D3D8)本身提供的功能只有一小部分能在使用HAL且硬件不支持时模拟,你要用大量代码分析硬件能力和采取不同策略
以上就是关于打开了一个PDF,然后我发现右上角不是这个PDF的名称却是显示TO某家公司,为什么全部的内容,包括:打开了一个PDF,然后我发现右上角不是这个PDF的名称却是显示TO某家公司,为什么、游戏缺少SHA-2、什么是OpeenGL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!



















