社区
其它技术问题
帖子详情
GluProject传入的坐标很小时会很慢?
gig886
2014-11-03 10:45:01
RT,我在将三维坐标转换成屏幕坐标时,由于坐标太大我把它减去一个值变小之后再传进去。结果运行特别慢,不知道为什么?
...全文
84
2
打赏
收藏
GluProject传入的坐标很小时会很慢?
RT,我在将三维坐标转换成屏幕坐标时,由于坐标太大我把它减去一个值变小之后再传进去。结果运行特别慢,不知道为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
勤奋的小游侠
2014-11-03
打赏
举报
回复
没有代码,无法分析
赵4老师
2014-11-03
打赏
举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应汇编一行! 单步Debug版对应汇编千行不如单步Release版对应汇编一行!
单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
doom-fcg:最终计算机图形学工作
计算机图形学基础的最后工作 我们利用OpenGL和C ++的CG知识创建了类似《毁灭战士》的游戏。 所需的库: 需要填补 SFML 与Windows和Linux兼容。 要求: 您的应用程序必须启用实时交互。 :check_mark: 您的应用程序必须具有一些客观且平凡的控制逻辑。 :check_mark: 您的应用程序必须使用我们在课堂上看到的矩阵进行几何变换(模型矩阵),投影(投影矩阵)和相机
坐标
系的规格(视图矩阵)。 您不能将现有库用于相机计算,转换等。 例如,不能使用以下在Web教程中常用的函数:
glu
LookAt(),
glu
Ortho2D(),
glu
Perspective(),
glu
PickMatrix(),
glu
Project
(),
glu
Un
Project
(),glm :: lookAt() ,glm :: ortho(),glm ::透视(),glm :: pickMatrix(),glm ::旋转(),
OpenGL 库函数汇总(中文分类)CHM
首先感谢各位的下载,这个文档是我自己整理的,由于函数太多,没办法一一详细的添加用法的中文翻译,还望大家见谅,里面写明了是中文分类。 如哪位朋友有中文的用法介绍可以提供给我,让你我一起完善这个中文的翻译工作! 有些朋友说给我骗了,你要知道整理这个文档我花了大量时间。已经非常的不容易了,我找了好多CHM文档都没有一个是我自己想要的。非常痛苦弄出来的!希望大家多多支持!! 中文分类 OpenGL 库函数汇总 ================================= 目前OpenGL的函数主要包含在3个库中 1.GL 函数库 2.
GLU
函数库 3.
GLU
T 函数库 1.GL 库函数 =================================== 颜色编辑 ------------------- glShadeModel 选择平面明暗模式或光滑明暗模式 void glShadeModel(GLenum mode) 参数:mode 指定表示明暗模式的符号值,可选 GL_FLAT 和 GL_SMOOTH ,缺省值为 GL_SMOOTH glColor 设置当前颜色 这是一个家族性质的函数集合,并没有glColor()这个函数。其包含的函数如下: void glColor3b(GLbyte red , GLbyte green , GLbyte blue) void glColor3d(GLdouble red , GLdouble green , GLdouble blue) void glColor3f(GLfloat red , GLfloat green , GLfloat blue) void glColor3i(GLint red , GLint green , GLint blue) void glColor3s(GLshort red , GLshort green , GLshort blue) void glColor3ub(
GLu
byte red ,
GLu
byte green ,
GLu
byte blue) void glColor3ui(
GLu
int red ,
GLu
int green ,
GLu
int blue) void glColor3us(
GLu
short red ,
GLu
short green ,
GLu
short blue) void glColor4b(GLbyte red , GLbyte green , GLbyte blue , GLbyte alpha) void glColor4d(GLdouble red , GLdouble green , GLdouble blue , GLdouble alpha) void glColor4f(GLfloat red , GLfloat green , GLfloat blue , GLfloat alpha) void glColor4i(GLint red , GLint green , GLint blue , GLint alpha) void glColor4s(GLshort red , GLshort green , GLshort blue , GLshort alpha) void glColor4ub(
GLu
byte red ,
GLu
byte green ,
GLu
byte blue ,
GLu
byte alpha) void glColor4ui(
GLu
int red ,
GLu
int green ,
GLu
int blue ,
GLu
int alpha) void glColor4us(
GLu
short red ,
GLu
short green ,
GLu
short blue , GLbyte alpha) 参数:red , green , blue 指定当前新的红、绿、蓝的颜色值 alpha 透明度,指明当前新的 alpha 颜色值 ,只有在 glColor4 函数中带4个变量时才
会
指定此参数。 此外还包括: void glColor3bv(const GLbyte * v) void glColor3dv(const GLdoble * v) void glColor3fv(const GLfloat * v) void glColor3iv(const GLint * v) void glColor3sv(const GLshort * v) void glColor3ubv(const
GLu
byte * v) void glColor3uiv(const
GLu
int * v) void glColor3usv(const
GLu
short * v) void glColor4bv(const GLbyte * v) void glColor4dv(const GLdoble * v) void glColor4fv(const GLfloat * v) void glColor4iv(const GLint * v) void glColor4sv(const GLshort * v) void glColor4ubv(const
GLu
byte * v) void glColor4uiv(const
GLu
int * v) void glColor4usv(const
GLu
short * v) 参数:v 指定一个值向包含红、绿、蓝和 alpha 值的数组指针。 glColorPointer 定义颜色数组 void glColorPointer(GLint size , GLenum type , GLsizei stride , GLsizei count , const GLvoid * pointer) 参数:size 每个颜色的分量数目 ,该值必须是3或4 type 在颜色数组中每个颜色分量的数据类型,可选的数据类型为: GL_BYTE GL_UNSIGNED_BYTE GL_SHORT GL_UNSIGNED_SHORT GL_INT GL_UNSIGNED_INT GL_FLOAT GL_UNSIGNED_FLOAT stride 相邻两个颜色的字节偏移量。当stride为零时 ,颜色值在数组中是一个接一个排列的。 count 静态颜色的数目 ,从第一个颜色开始计数。 pointer 指向颜色数组中第一个颜色元素中第一个分量的指针。 glIndex 设置当前颜色索引 void glIndexd(GLdouble c) void glIndexf(GLfloat c) void glIndexi(GLint c) void glIndexs(GLshort c) 参数: c 新的当前颜色索引值 void glIndexdv(GLdouble * c) void glIndexfv(GLfloat * c) void glIndexiv(GLint * c) void glIndexsv(GLshort * c) 参数: c 指向一个由单个元素组成的数组指针 ,该数组中包含新的当前颜色索引值。 glIndexPointer 定义颜色索引数组 void glIndexPointer(GLenum type ,GLsizei stride ,GLsizei count ,const GLvoid *pointer) 参数:type 数组中每个颜色索引的数据类型 ,可以选择的符号常数为:GL_SHORT GL_INT GL_FLOAT GL_DOUBLE stride 相邻的两个颜色索引的字节偏移量。当stride为零时 ,颜色索引值在数组中是一个接一个排列的。 count 颜色索引的数目,从第一个颜色开始计数 ,它们是静态的。 pointer 指向颜色数组中第一个颜色索引的指针。 glColorTableEXT 为目标调色板纹理指定调色板的格式和大小 void glColorTableEXT(GLenum target ,GLenum internalFormat ,GLsizei width ,GLenum format ,GLenum type ,const GLvoid *data) 参数:target 需要更改调色板的目标纹理 ,必须为 TEXTURE_1D TEXTURE_2D PROXY_TEXTURE_1D PROXY_TEXTURE_2D intenalFormat (等待编辑) width 调色板的大小 ,对于某些 n ,必须满足 2n>=1 . format (等待编辑) type data的数据类型 ,可选以下符号常量: GL_UNSIGNED_BYTE GL_BYTE GL_UNSIGNED_SHORT GL_SHORT GL_UNSIGNED_INT GL_INT GL_UNSIGNED_FLOAT GL_FLOAT data 指向调色板纹理数据的指针。对于调色板项目 ,数据作为一维纹理调色板项目中的单个像素进行处理。 glColorSubTableEXT 指定需要替代的目标纹理调色板的一部分 void glColorSubTableEXT(GLenum target ,GLsizei start ,GLsizei count ,GLenum format ,GLenum type ,const GLvoid * data) 参数:target 需要更改调色板的目标纹理 ,必须为 TEXTURE_1D TEXTURE_2D PROXY_TEXTURE_1D PROXY_TEXTURE_2D start 被改变的调色板的起始调色板索引项目。 count 被改变的调色板中从 start 开始的调色板索引项目的数目。count参数确定了被改变的调色板中调色板索引项目的范围。 format (等待编辑) type data的数据类型 ,可选以下符号常量: GL_UNSIGNED_BYTE GL_BYTE GL_UNSIGNED_SHORT GL_SHORT GL_UNSIGNED_INT GL_INT GL_UNSIGNED_FLOAT GL_FLOAT data 指向调色板纹理数据的指针。对于调色板项目 ,数据作为一维纹理调色板项目中的单个像素进行处理。 绘制几何图形 ----------------------------- glVertex glVertexPointer glArrayElement glBegin , glEnd glEdgeFlag , glEdgeFlagv glPointSize glLineWidth glLineStipple glPolygonMode glFrontFace glPolygonStipple glDrawElements glRect
坐标
转换 ----------------------------- glTranslate glRotate glScale glViewPoint glFrustum glOrtho glClipPlane 堆栈操作 ------------------------------ glLoadMatrix glMultMatrix glMatrixMode glPushMatrix , glPopMatrix glPushAttrib , glPopAttrib glPushName , glPopName glInitName glLoadName 1.GL 函数库(续) =============================== 显示列表 ----------------------------- glNewList , glEndList glCallList glCallLists glGenLists glDeleteLists glIsList 使用光照和材质 ----------------------------- glNormal glNormalPointer glLight glLightModel glMaterial glColorMaterial 像素操作 ------------------------------ glRasterPos glBitmap glReadPixels glDrawPixels glCopyPixels glCopyTexImage1D glCopyTexImage2D glCopyTexSubImage1D glCopyTexSubImage2D glPixelZoom glPixelStore glPixelTransfer glPixelMap 纹理映射 ----------------------------- glTexImage1D glTexImage2D glTexParameter glTexSubImage1D glTexSubImage2D glTexEnv glTexCoord glTexGen glTexCoordPointer glDeleteTextures 特效操作 ---------------------------- glBlendFunc glHint glFog 1.GL 库函数(续2) ============================= 帧缓存操作 ----------------------------- glClear glClearAccum glClearColor glClearDepth glClearIndex glClearStencil glDrawBuffer glIndexMask glColorMask glDepthMask glStencilMask glAlphaFunc glStencilFunc glStencilOp glDepthFunc glDepthRange glLogicOp glAccum 曲线或曲面绘制 ------------------------------ glEvalCoord glMap1 glMap2 glMapGrid glEvalMesh glEvalPoint 查询函数 ----------------------------- glGet glGetClipPlane glGetColorTableEXT glGetColorTableParameterfvEXT , glGetColorTableParameterivEXT glGetError glGetLight glGetMap glGetMaterial glGetPixelMap glGetPointerv glGetPolygonStipple glGetString glGetTexEnv glGetTexImage glGetTexLevelParameter glGetTexParameter 2.
GLU
库函数 ============================ 绘制 NURBS 曲线和曲面 ------------------------------
glu
NewNurbsRenderer
glu
NurbsProperty
glu
NurbsCallback
glu
BeginCurve ,
glu
EndCurve
glu
NurbsCurve
glu
DeleteNurbsRenderer
glu
BeginSurface ,
glu
EndSurface
glu
NurbsSurface
glu
BeginTrim ,
glu
EndTrim
glu
PwlCurve
glu
BeginPolygon ,
glu
EndPolygon
glu
PickMatrix 绘制二次几何物体 ---------------------------------
glu
NewQuadric
glu
QuadricDrawStyle
glu
QuadricNormals
glu
QuadricOrientation
glu
Cylinder
glu
Sphere
glu
Disk
glu
PartialDisk
glu
DeleteQuadric
glu
QuadricTexture
glu
QuadricCallback 网格化 ------------------------------
glu
NewTess
glu
TessVertex
glu
TessCallback
glu
TessBeginPolygon ,
glu
TessEndPolygon
glu
TessBeginContour ,
glu
TessBeginContour
glu
TessProperty
glu
NextContour
glu
TessNormal
glu
DeleteTess
坐标
转换 ------------------------------
glu
Ortho2D
glu
Perspective
glu
LookAt
glu
Project
glu
Un
Project
多重映射 ------------------------------
glu
Build1DMipmaps
glu
Build2DMipmaps
glu
ScaleImage 查询函数 -----------------------------
glu
ErrorString
glu
GetNurbsProperty
glu
GetString
glu
GetTessProperty 3.
GLU
T 库函数 ============================= 初始化和启动事件处理 -------------------------
glu
tInit
glu
tInitWindowPosition
glu
tInitWindowSize
glu
tInitDisplayMode
glu
tMainLoop 窗口管理 -------------------------
glu
tCreateWindow
glu
tCreateSubWindow
glu
tHideWindow
glu
tShowWindow
glu
tSetWindowTitle
glu
tPostRedisplay
glu
tSwapBuffers
glu
tFullScreen
glu
tPositionWindow
glu
tReshapeWindow
glu
tSetWindow
glu
tGetWindow
glu
tPopWindow
glu
tPushWindow
glu
tDestroyWindow
glu
tIconifyWindow
glu
tSetCursor 重叠层管理 -------------------------
glu
tEstablishOverlay
glu
tUseLayer
glu
tRemoveOverlay
glu
tPostOverlayRedisplay
glu
tShowOverlay
glu
tHideOverlay 菜单管理 -------------------------
glu
tCreateMenu
glu
tAddMenuEntry
glu
tAddSubMenu
glu
tAttachMenu
glu
tGetMenu
glu
tSetMenu
glu
tDestroyMenu
glu
tChangeToMenuEntry
glu
tChangeToSubMenu
glu
tRemoveMenuItem
glu
tDetachMenu 3.
GLU
T 库函数(续) =============================== 注册回调函数 -------------------------------
glu
tDisplayFunc
glu
tReshapeFunc
glu
tMouseFunc
glu
tMotionFunc
glu
tIdleFunc
glu
tVisibilityFunc
glu
tKeyboardFunc
glu
tSpecialFunc
glu
tOverlayDisplayFunc
glu
tPassiveMotionFunc
glu
tEntryFunc
glu
tSpaceballMotionFunc
glu
tSpaceballRotateFunc
glu
tSpaceballButtonFunc
glu
tButtonBoxFunc
glu
tDialsFunc
glu
tTableMotionFunc
glu
tTableButtonFunc
glu
tMenuStatusFunc
glu
tTimerFunc 颜色索引映射表管理 -------------------------------
glu
tSetColor
glu
tGetColor
glu
tCopyColormap 状态检索 -------------------------------
glu
tGet
glu
tLayerGet
glu
tDeviceGet
glu
tGetModifiers
glu
tExtensionSupported 字体绘制 -------------------------------
glu
tBitmapCharacter
glu
tBitmapWidth
glu
tStrokeCharacter
glu
tStrokeWidth 几何图形绘制 -------------------------------
glu
tSolidSphere ,
glu
tWireSphere
glu
tSolidCube ,
glu
tWireCube
glu
tSolidCone ,
glu
tWireCone
glu
tSolidTorus ,
glu
tWireTorus
glu
tSolidDodecahedron ,
glu
tWireDodecahedron
glu
tSolidOctahedron ,
glu
tWireOctahedron
glu
tSolidTetrahedron ,
glu
tWireTetrahedron
glu
tSolieIcosahedron ,
glu
tWireIcosahedron
glu
tSolidTeapot ,
glu
tWireTeapot
OpenGL: 3D
坐标
到屏幕
坐标
的转换逻辑(
glu
Project
的实现)(转)
OpenGL: 3D
坐标
到屏幕
坐标
的转换逻辑(
glu
Project
的实现) 遇到需要将3D
坐标
转换到屏幕
坐标
的问题,在网上很多朋友也在寻找答案,下面是
glu
中
glu
Project
函数的实现。(实际上就是mesa的OpenGL实现版本) // 矩阵按行优先存储 首先说一下opengl中的矩阵表示, 一般在c/c++中定义的矩阵和opengl中的矩阵分别是: /************...
QtQpengl中窗口
坐标
与世界
坐标
系的转换以及
glu
Project
/
glu
Un
Project
的使用
opengl中的世界
坐标
系,我们都清楚是归一化到(-1,+1)之间的,而我们的窗口
坐标
又是以坐上角为原点的,有时为了实现页面与opengl中绘制对象的交互,两者
坐标
间的转化其实是很有必要的。此外,除了2D
坐标
外,3D
坐标
也可进行转换,此文只介绍了2D的使用,要是有机
会
之后更新3D的使用。 核心代码部分 GLint viewport[4]; GLdouble modelview[16...
OpenGL三维
坐标
与二维
坐标
:
glu
Project
和
glu
Un
project
的详解
简介: 三维空间中,经常需要将3D空间中的点转换到2D(屏幕
坐标
),或者将2D点转换到3D空间中。当你使用OpenGL的时候,简单使用
glu
Project
()和
glu
Un
project
()函数就可以实现这个功能了。但这两个神奇的函数是怎样实现的,一直困扰着我,经过一番仔细研究,将自己的思路写在这里:
glu
Porject() 先通过看代码,来一步一步分析它的数学原理吧!(其
其它技术问题
3,881
社区成员
9,054
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章