OpenGL的RedBook和BlueBook是两本什么样的书? opengl中怎样把二维的位图纹理贴到球面上

OpenGL\u7f16\u7a0b\u6307\u5357\u7b2c\u516b\u7248VS2015\u600e\u4e48\u914d\u7f6e

\u4e00\u3001\u73af\u5883\u642d\u5efa\u6307\u5357

\u4e66\u4e2d\u7684\u5730\u5740

http://www.opengl-redbook.com/

\u53bb\u8fd9\u91cc\u6253\u5305\u4e0b\u8f7dOpenGL\u7ea2\u5b9d\u4e66\u7684\u793a\u4f8b\u4ee3\u7801\uff0c\u89e3\u538b\u540e\u662f\u8fd9\u6837



\u867d\u7136\u6ca1\u6709\u7b2c\u4e00\u7ae0\u7684\u4ee3\u7801\u4f46\u7b2c\u4e00\u7ae0\u7684\u5185\u5bb9\u597d\u6b79\u7b97\u4e00\u4e2a\u5b8c\u6574\u7684\u4f8b\u5b50\uff0c\u7f51\u4e0a\u5404\u79cd\u73af\u5883\u642d\u5efa\u6559\u7a0b\u4e5f\u90fd\u4ee5\u7b2c\u4e00\u7ae0\u7684\u4ee3\u7801\u4e3a\u4f8b\uff0c\u6211\u4eec\u5c31\u62ff\u8fc7\u6765\u76f4\u63a5\u7528\u4e00\u4e0b\u3002



1\u3001\u6253\u5f00VS2015\u521b\u5efa\u4e00\u4e2a\u7a7a\u7684\u63a7\u5236\u53f0\u9879\u76ee\uff0c\u7136\u540e\u65b0\u5efa\u4e00\u4e2acpp\u6587\u4ef6\uff0c\u7c98\u8d34\u7ea2\u5b9d\u4e66\u7b2c\u4e00\u7ae0\u7684\u793a\u4f8b\u4ee3\u7801



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

///////////////////////////////////////////////////////////////////////
//
// triangles.cpp
//
///////////////////////////////////////////////////////////////////////
#include
using namespace std;
#include "vgl.h"
#include "LoadShaders.h"
enum VAO_IDs { Triangles, NumVAOs };
enum Buffer_IDs { ArrayBuffer, NumBuffers };
enum Attrib_IDs { vPosition = 0 };
GLuint VAOs[NumVAOs];
GLuint Buffers[NumBuffers];
const GLuint NumVertices = 6;
//---------------------------------------------------------------------
//
// init
//
void init(void)
{
glGenVertexArrays(NumVAOs, VAOs);
glBindVertexArray(VAOs[Triangles]);
GLfloat vertices[NumVertices][2] = {
{ -0.90, -0.90 }, // Triangle 1
{ 0.85, -0.90 },
{ -0.90, 0.85 },
{ 0.90, -0.85 }, // Triangle 2
{ 0.90, 0.90 },
{ -0.85, 0.90 }
};
glGenBuffers(NumBuffers, Buffers);
glBindBuffer(GL_ARRAY_BUFFER, Buffers[ArrayBuffer]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices),
vertices, GL_STATIC_DRAW);
ShaderInfo shaders[] = {
{ GL_VERTEX_SHADER, "triangles.vert" },
{ GL_FRAGMENT_SHADER, "triangles.frag" },
{ GL_NONE, NULL }
};
GLuint program = LoadShaders(shaders);
glUseProgram(program);
glVertexAttribPointer(vPosition, 2, GL_FLOAT,
GL_FALSE, 0, BUFFER_OFFSET(0));
glEnableVertexAttribArray(vPosition);
}
//---------------------------------------------------------------------
//
// display
//
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBindVertexArray(VAOs[Triangles]);
glDrawArrays(GL_TRIANGLES, 0, NumVertices);
glFlush();
}

//---------------------------------------------------------------------
//
// main
//
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowSize(512, 512);
glutInitContextVersion(4, 3);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutCreateWindow(argv[0]);

glewExperimental = GL_TRUE;
if (glewInit()) {
cerr << "Unable to initialize GLEW ... exiting" << endl;
exit(EXIT_FAILURE);
}
init();
glutDisplayFunc(display);
glutMainLoop();
}




2\u3001\u6253\u5f00\u9879\u76ee\u5c5e\u6027\uff0c\u5728\u201cVC++ Directories\u201d\u9009\u9879\u5361\u4e2d\uff0c\u5c06\u524d\u9762\u4e0b\u8f7d\u56de\u6765\u7684\u7ea2\u5b9d\u4e66\u793a\u4f8b\u4ee3\u7801\u4e2d\u7684include\u76ee\u5f55\u52a0\u5165\u201cInclude Directories\u201d\uff0c\u5c06lib\u76ee\u5f55\u52a0\u5165\u201cLibrary Directories\u201d





3\u3001\u6253\u5f00\u9879\u76ee\u5c5e\u6027\uff0c\u5728\u201cGeneral\u201d\u9009\u9879\u5361\u4e2d\uff0c\u5c06\u201cPlatform Toolset\u201d\u8bbe\u7f6e\u4e3aVS2013



4\u3001\u5728\u9879\u76ee\u7ba1\u7406\u5668\u4e2d\u53f3\u51fbSource Files\u7684Filter\uff0c\u6dfb\u52a0\u73b0\u6709\u9879\uff0c\u7136\u540e\u627e\u5230\u7ea2\u5b9d\u4e66\u6e90\u7801\u76ee\u5f55\u4e2d\u7684lib\u76ee\u5f55\uff0c\u6dfb\u52a0LoadShaders.cpp\u6587\u4ef6



5\u3001\u6253\u5f00\u9879\u76ee\u5c5e\u6027\uff0c\u5728\u201cLinker/Input\u201d\u9009\u9879\u5361\u4e2d\uff0c\u5728\u201cIgnore Specific Default Libraries\u201d\u4e2d\u6dfb\u52a0libcmtd.lib



6\u3001\u5728\u9879\u76ee\u76ee\u5f55\u4e2d\u65b0\u5efa\u4e24\u4e2a\u6587\u672c\u5206\u522b\u547d\u540d\u4e3atriangles.vert\u548ctriangles.frag\uff0c\u4e5f\u5c31\u662f\u6211\u4eec\u7684\u9876\u70b9\u7740\u8272\u5668\u548c\u7247\u6bb5\u7740\u8272\u5668\u5566



triangles.vert



1
2
3
4
5
6
7

#version 430 core
layout(location = 0) in vec4 vPosition;
void
main()
{
gl_Position = vPosition;
}




triangles.frag



1
2
3
4
5
6
7

#version 430 core
out vec4 fColor;
void
main()
{
fColor = vec4(0.0, 0.0, 1.0, 1.0);
}




7\u3001\u7f16\u8bd1\uff0c\u8fd0\u884c\uff0c\u641e\u5b9a





\u4e8c\u3001\u6240\u4ee5\u7136

1\u3001\u5173\u4e8e\u7b2c\u4e00\u6b65

\u8fd9\u91cc\u7684\u793a\u4f8b\u4ee3\u7801\u5176\u5b9e\u6bd4\u4e66\u4e2d\u7684\u591a\u4e86\u4e00\u53e5

glewExperimental = GL_TRUE;

\u4e66\u91cc\u7684\u4ee3\u7801\u7528\u5230\u4e86GLEW\u5e93\uff0cGLEW\u53ef\u4ee5\u8de8\u5e73\u53f0\u652f\u6301OpenGL\u9ad8\u7ea7\u6269\u5c55\u7279\u6027\uff0c\u6ca1\u6709GLEW\u7684\u8bdd\u5728Win\u5e73\u53f0\u662f\u65e0\u6cd5\u4f7f\u75284.3\u7684\u90a3\u4e9b\u529f\u80fd\u7684\u3002\u8fd9\u53e5
\u4ee3\u7801\u662fGLEW\u6240\u6709\u6269\u5c55\u7684\u4e00\u4e2a\u5f00\u5173\uff0c\u9700\u8981\u5728glewInit()\u4e4b\u524d\u6267\u884c\u3002\u5982\u679c\u6ca1\u6709\u8fd9\u4e00\u53e5\uff0c\u7f16\u8bd1\u662f\u53ef\u4ee5\u901a\u8fc7\u7684\uff0c\u4f46\u5728\u8fd0\u884c\u65f6\u4f1a\u5d29\u6e83\u3002

2\u3001\u5173\u4e8e\u7b2c\u4e8c\u6b65

\u4e3b\u8981\u76ee\u7684\u662f\u5c06\u793a\u4f8b\u4ee3\u7801\u4e2d\u7528\u5230\u7684GLUT\u548cGLEW\u5e93\u7684\u5934\u6587\u4ef6\u548c\u5e93\u6587\u4ef6\u5f15\u5165\u9879\u76ee\u76ee\u5f55\u3002\u8fd9\u4e00\u6b65\u6ca1\u8bbe\u7f6e\u597d\u7684\u8bdd\u7f16\u8bd1\u65e0\u6cd5\u901a\u8fc7\uff0c\u73b0\u8c61\u4e00\u822c\u662f\u65e0\u6cd5\u6253\u5f00freeglut\u76f8\u5173\u5e93\u6587\u4ef6\u6216\u8005\u67d0\u4e9b\u51fd\u6570\u6ca1\u6709\u58f0\u660e\u3002

\u7f51\u4e0a\u6709\u4e9b\u6559\u7a0b\u8ba9\u4f60\u81ea\u5df1\u53bb\u4e0b\u8f7d\u5e76\u7f16\u8bd1freeglut\u548cglew\uff0c\u7136\u540e\u62f7\u8d1d\u5230\u5404\u79cd\u7cfb\u7edf\u76ee\u5f55\u548cVS\u7684\u76ee\u5f55\uff0c\u5176\u5b9e\u6ca1\u7528\u3002\u6240\u6709\u7528\u5230\u7684\u5934\u6587\u4ef6\u548c\u5e93\u6587\u4ef6\u5728\u7b2c\u516b\u7248\u793a\u4f8b\u4ee3\u7801include\u548clib\u76ee\u5f55\u4e2d\u90fd\u6709\u4e86\uff0c\u4f60\u53ea\u8981\u6b63\u786e\u5f15\u5165\u9879\u76ee\u4e2d\u5c31\u4e0d\u4f1a\u6709\u95ee\u9898\u3002

3\u3001\u5173\u4e8e\u7b2c\u4e09\u6b65

\u53ea\u6709VS2015\u9700\u8981\u8fd9\u4e00\u6b65

VS2015\u66f4\u6539\u4e86\u5f88\u591a\u6807\u51c6\u5e93\u7684\u94fe\u63a5\u65b9\u5f0f\u548c\u5b8f\u5b9a\u4e49\uff0c\u800c\u7ea2\u5b9d\u4e66\u7b2c\u516b\u7248\u4e2d\u7528\u5230\u7684freeglut\u5e93\u4e2d\u7528\u5230\u4e86\u8fd9\u4e9b\u6807\u51c6\u5e93\u548c\u5b8f\u3002\u6240\u4ee5\u5982\u679c\u62a5_sscanf\u6216\u8005__iob_func\u662f\u65e0\u6cd5\u89e3\u6790\u7684\u5916\u90e8\u7b26\u53f7\u4e4b\u7c7b\u7684\u9519\u8bef\uff0c\u53ea\u9700\u8981\u628a\u5e73\u53f0\u5de5\u5177\u96c6\u6539\u6210\u65e7\u7684\u5c31\u884c\u4e86\u3002

4\u3001\u5173\u4e8e\u7b2c\u56db\u6b65

\u6ca1\u6709\u8fd9\u4e00\u9879\uff0cLoadShaders\u4e2d\u5b9a\u4e49\u7684\u51fd\u6570\u4f1a\u62a5\u65e0\u6cd5\u89e3\u6790\u7684\u5916\u90e8\u7b26\u53f7\u9519\u8bef\u3002

5\u3001\u5173\u4e8e\u7b2c\u4e94\u6b65

\u5982\u679c\u4e0d\u5ffd\u7565\u8fd9\u4e2a\u9ed8\u8ba4\u5e93\uff0c\u4f1a\u62a5\u5e93\u51b2\u7a81\u6216\u8005\u65e0\u6cd5\u6253\u5f00\u5e93\u6587\u4ef6\u7684\u9519\u8bef\u3002

6\u3001\u5173\u4e8e\u7b2c\u516d\u6b65

\u6ca1\u7740\u8272\u5668\u753b\u4e2a\u5375\uff0c\u8fd0\u884c\u6f06\u9ed1\u4e00\u7247\u3002

7\u3001\u53cc\u663e\u5361\u7535\u8111\u53c8\u8eba\u67aa\u4e86

\u6211\u6298\u817e\u4e86\u534a\u5929\u8fd0\u884cCMD\u663e\u793aUnable to create OpenGL 4.3 context\uff0c\u5c3c\u739b\u53cc\u663e\u5361\u7535\u8111\u9ed8\u8ba4\u7528\u6838\u5fc3\u663e\u5361\u542f\u52a8\u5e94\u7528\u3002\u6253\u5f00NVidia\u63a7\u5236\u9762\u677f-\u7ba1\u74063D\u8bbe\u7f6e-\u5168\u5c40\u8bbe\u7f6e-\u9996\u9009\u56fe\u5f62\u5904\u7406\u5668\uff0c\u628a\u72ec\u663e\u8bbe\u4e3a\u9ed8\u8ba4\u5c31OK\u4e86\u3002
http://www.cnblogs.com/gagugagu/p/5211452.html

\u5927\u6982\u6b65\u9aa4:
1.\u521b\u5efa\u7eb9\u7406\u5bf9\u8c61,\u5e76\u4e3a\u4ed6\u6307\u5b9a\u4e00\u4e2a\u7eb9\u7406.
2.\u786e\u5b9a\u7eb9\u7406\u5982\u4f55\u5e94\u7528\u5230\u6bcf\u4e2a\u50cf\u7d20\u4e0a.
3.\u542f\u7528\u7eb9\u7406\u8d34\u56fe
4.\u7ed8\u5236\u573a\u666f,\u63d0\u4f9b\u7eb9\u7406\u548c\u51e0\u4f55\u5750\u6807
\u8fc7\u6ee4:\u7531\u4e8e\u6211\u4eec\u63d0\u4f9b\u7684\u7eb9\u7406\u56fe\u50cf\u5f88\u5c11\u80fd\u548c\u6700\u7ec8\u7684\u5c4f\u5e55\u5750\u6807\u5f62\u6210\u5bf9\u5e94,\u5927\u5c0f\u4e0d\u540c,\u6240\u4ee5\u9700\u8981\u8bbe\u7f6e\u8fc7\u6ee4\u9879\u76ee.\u5141\u8bb8\u6211\u4eec\u8fdb\u884c\u63d2\u503c\u6216\u8005\u5300\u548c,\u6307\u5b9a\u653e\u5927\u7f29\u5c0f\u7684\u51fd\u6570.glTexParameter*(),\u4f7f\u7528\u8fc7\u6ee4\u6a21\u5f0fGL_NEAREST\u90a3\u4e48\u7eb9\u7406\u5355\u4f4d\u6700\u90bb\u8fd1\u7684\u5c06\u88ab\u4f7f\u7528,GL_LINEAR\u90a3\u4e48\u5c31\u75282*2\u7684\u5305\u542b\u7eb9\u7406\u6570\u636e\u7684\u6570\u7ec4\u52a0\u6743\u7ec4\u4f5c\u4e3a\u7eb9\u7406;
\u547d\u540d\u7eb9\u7406\u5bf9\u8c61:glGenTexures(GLSize n,Gluint *textureNames); n\u4e3a\u4ea7\u751fn\u4e2a\u672a\u4f7f\u7528\u7684\u5bf9\u8c61\u503c,textureNames\u4e3a\u7eb9\u7406\u540d\u5b57\u6570\u7ec4,\u4f60\u53ef\u80fd\u6709\u51e0\u4e2a\u7eb9\u7406\u9700\u8981\u4f7f\u7528,\u8fd9\u4e2a\u6570\u7ec4\u6765\u533a\u5206.
1.\u4f60\u9700\u8981\u8f7d\u5165\u56fe\u7247\u65f6\u5019\u7684\u7eb9\u7406\u5b9a\u4e49
void glTexImage2D( GLenum target, GLint level, GLint components,GLsizei width, GLsizei height, GLint border,GLenum format, GLenum type, const GLvoid *pixels );
\u5b9a\u4e49\u4e00\u4e2a\u4e8c\u7ef4\u7eb9\u7406\u6620\u5c04\u3002target\u662f\u5e38\u6570 GL_TEXTURE_2D, level\u8868\u793a\u591a\u7ea7\u5206\u8fa8\u7387\u7684\u7eb9\u7406\u56fe\u8c61\u7684\u7ea7\u6570\u3002\u82e5\u53ea\u6709\u4e00\u79cd\u5206\u8fa8\u7387\uff0clevel\u4e3a0\u3002components\u662f\u4ece1\u52304\u7684\u6574\u6570\uff0c1\uff1a\u9009\u62e9R\uff1b2\uff1a\u9009\u62e9R A\uff1b3\uff1a\u9009\u62e9R G B\uff1b
\u6e90\u6587\u6863
\u7ed1\u5b9a\u7eb9\u7406\u5bf9\u8c61:glBindTexture(Glenum target,Gluint,glTexImage*),\u5c06\u628a\u6570\u636e\u5b58\u50a8\u5230\u8fd9\u4e2a\u7eb9\u7406\u5bf9\u8c61\u4e2d,\u5982\u679c\u9700\u8981\u7eb9\u7406\u56fe\u50cf\u7684\u989c\u8272\u548c\u7269\u4f53\u8868\u9762\u7684\u989c\u8272\u8fdb\u884c\u7ec4\u5408,\u4e0d\u662f\u76f4\u63a5\u8d34\u56fe,\u90a3\u4e48\u5c31\u9700\u8981glTexEvn*()\u51fd\u6570.
\u786e\u5b9a\u7eb9\u7406\u5750\u6807:glTexCoord2f(1\uff0eof\uff0c1\uff0eOf)\uff1bglVertex3f(1\uff0eOf\uff0c1\uff0eOf\uff0c0\uff0eOf)\uff1b\u6bd4\u5982\u8fd9\u4e00\u53e5\u8bdd.\u5bf9\u4e8e\u8bbe\u7f6e\u7eb9\u7406\u8d34\u56fe\u7684\u5750\u6807\u548c\u7ed8\u56fe\u5750\u6807\u7684\u786e\u5b9a\u95ee\u9898.\u4e00\u822c\u7684\u60c5\u51b5\u5047\u8bbe\u7eb9\u7406\u548c\u56fe\u7247\u90fd\u662f\u6b63\u65b9\u5f62\u7684,\u90a3\u4e48\u6211\u4eec\u5e0c\u671b\u7eb9\u7406\u6620\u5c04\u5230\u6574\u4e2a\u7269\u4f53\u4e0a\u9762,\u8fd9\u4e2a\u65f6\u5019\u7eb9\u7406\u5750\u6807\u6309\u7167\u9006\u65f6\u9488\u653e\u5fc3\u4f9d\u6b21(0,0),(1,0),(1,1),(0,1),\u5176\u4e2d\u7684\u56db\u4e2a\u5750\u6807\u53ea\u662f\u4ee3\u8868\u7684\u5411\u91cf,\u5e76\u4e0d\u662f\u771f\u5b9e\u7684\u5750\u6807,\u5982\u679c\u662f\u8981\u4e00\u534a\u8d34\u5230\u7269\u4f53\u4e0a\u5c31\u5e94\u8be5\u662f0.5\u7684\u503c\u4e86,\u5047\u5982\u4f60\u7ed9\u7684\u7eb9\u7406\u5750\u6807\u5927\u4e8e1,\u90a3\u4e48\u5c06\u4f1a\u8d34\u591a\u4e2a\u7eb9\u7406,\u6bd4\u5982\u503c\u4e3a2\u7684\u65f6\u5019,\u4f1a\u67094\u4e2a\u7eb9\u7406\u8d34\u56fe.
1 \u6982\u8ff0
\u6982\u62ec\u7684\u8bf4\uff0c \u7eb9\u7406\u6620\u5c04\u673a\u5236\u5141\u8bb8\u4f60\u5c06\u4e00\u4e2a\u56fe\u50cf\u5173\u8054\u5230\u4e00\u4e2a\u591a\u8fb9\u5f62\u4e0a\uff0c\u4ece\u800c\u5448\u73b0\u51fa\u771f\u5b9e\u89c6\u89c9\u6548\u679c\u3002\u4f8b\u5982\uff0c \u4f60\u53ef\u4ee5\u5c06\u4e66\u7684\u5c01\u9762\u56fe\u50cf\u5e94\u7528\u5230\u4e00\u4e2a\u65b9\u5f62\u4e0a\uff0c \u8fd9\u6837\u8fd9\u4e2a\u65b9\u5f62\u770b\u8d77\u6765\u5c31\u50cf\u662f\u4e00\u672c\u4e66\u4e86\u3002 \u4f60\u53ef\u4ee5\u5c06\u5730\u7403\u7684\u5730\u56fe\u901a\u8fc7\u7eb9\u7406\u6620\u5c04\u5e94\u7528\u5230\u4e00\u4e2a\u7403\u4f53\u4e0a\uff0c \u90a3\u4e48\u8fd9\u4e2a\u7403\u4f53\u5c31\u662f\u4e00\u4e2a3D\u7684\u5177\u771f\u5b9e\u611f\u7684\u5730\u7403\u4e86\u3002\u7eb9\u7406\u6620\u5c04\u5728\u5f53\u4eca\u76843D\u56fe\u5f62\u5e94\u7528\u4e0a\u5904\u5904\u7686\u662f\u3002\u6e38\u620f\u90fd\u662f\u901a\u8fc7\u7eb9\u7406\u6620\u5c04\u6765\u4f5c\u4e3a\u865a\u62df\u771f\u5b9e\u7684\u7b2c\u4e00\u4e2a\u6b65\u9aa4\u3002
\u7eb9\u7406\u6620\u5c04\u662f\u4e00\u4e2a\u4e8c\u7ef4\u7684\u6570\u7ec4\u3002\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u9879\u79f0\u4e4b\u4e3a\u7eb9\u7406\u70b9( texel )\u3002 \u867d\u7136\u8fd9\u4e2a\u6570\u7ec4\u662f\u4e8c\u7ef4\u7684\uff0c \u4f46\u662f\u53ef\u4ee5\u6620\u5c04\u5230\u975e\u4e8c\u7ef4\u7684\u5bf9\u8c61\u4e0a\uff0c \u5982\u7403\u4f53\u6216\u8005\u5176\u4ed6\u7684 3D \u5bf9\u8c61\u6a21\u578b\u4e0a\u3002
\u6bd4\u8f83\u5e38\u89c1\u7684\u662f\uff0c \u5f00\u53d1\u8005\u5728\u4ed6\u4eec\u7684\u56fe\u5f62\u5e94\u7528\u4e2d\u8fd0\u7528\u4e8c\u7ef4\u7eb9\u7406\uff0c \u5f53\u7136\u4e00\u7ef4\u6216\u8005\u4e09\u7ef4\u7684\u7eb9\u7406\u4e5f\u5e76\u975e\u672a\u95fb\u3002\u4e8c\u7ef4\u7eb9\u7406\u6709\u5bbd\u5ea6\u548c\u9ad8\u5ea6\u51b3\u5b9a\u4e8c\u7ef4\u3002\u4e00\u7ef4\u7eb9\u7406\u4e5f\u6709\u5bbd\u5ea6\u548c\u9ad8\u5ea6\uff0c \u53ea\u662f\u9ad8\u5ea6\u88ab\u8bbe\u4e3a\u503c 1\uff08\u5355\u4f4d\uff1a\u50cf\u7d20 pixel). \u800c\u4e09\u7ef4\u7eb9\u7406\u4e0d\u4ec5\u5177\u6709\u5bbd\u5ea6\u548c\u9ad8\u5ea6\uff0c \u8fd8\u6709\u6df1\u5ea6\uff0c \u6240\u4ee5\u4e09\u7ef4\u4e3a\u7eb9\u7406\u53c8\u79f0\u4e3a\u7acb\u4f53\u7eb9\u7406\u3002\u6211\u4eec\u8ba8\u8bba\u7684\u4e3b\u8981\u662f\u4e8c\u7ef4\u7eb9\u7406\u3002
2 \u9884\u5907\u77e5\u8bc6\uff1a \u7eb9\u7406\u5750\u6807
\u5728 OpenGl \u4e2d\u662f\u901a\u8fc7\u6307\u5b9a\u7eb9\u7406\u5750\u6807\u6765\u5c06\u7eb9\u7406\u6620\u5c04\u5230\u591a\u8fb9\u5f62\u4e0a\u53bb\u7684. \u5728\u7eb9\u7406\u5750\u6807\u7cfb\u4e2d, \u5de6\u4e0b\u89d2\u662f (0,0), \u53f3\u4e0a\u89d2\u662f (1,1). 2D \u7eb9\u7406\u7684\u5750\u6807\u4e2d\u901a\u8fc7\u6307\u5b9a (s,t) (s\u4e3ax\u8f74\u4e0a,t\u4e3ay\u8f74\u4e0a, \u53d6\u503c0~1). 1D, 3D, 4D\u7eb9\u7406\u5750\u6807\u7cfb\u4e2d\u5bf9\u5e94\u7684\u9700\u8981\u6307\u5b9a (s), (s,t,r), (s,t, r,q).
\u7eb9\u7406\u5750\u6807\u9700\u8981\u901a\u8fc7\u51fd\u6570 glTexCoord() \u6765\u8bbe\u7f6e, \u6b64\u51fd\u6570:

void glTexCoord{1234}{sifd}(TYPE coords);



void glTexCoord{1234}{sifd}v(TYPE coords);



\u5982\u5c06 2D \u7eb9\u7406\u5750\u6807\u8bbe\u4e3a (0.2, 0.4):

1

glTexCoord2f(0.2f,0.4f);


\u6bcf\u6b21\u901a\u8fc7 glVertex() \u6307\u5b9a\u4e00\u4e2a\u9876\u70b9\u65f6, \u5f53\u524d\u7684\u7eb9\u7406\u5750\u6807\u4f1a\u88ab\u5e94\u7528\u5230\u8fd9\u4e2a\u70b9\u4e0a. \u6240\u4ee5\u6bcf\u6307\u5b9a\u4e00\u4e2a\u65b0\u7684\u9876\u70b9, \u9700\u8981\u540c\u65f6\u4fee\u6539\u7eb9\u7406\u5750\u6807:
glBegin(GL_POLYGON);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, 0.5f, 0.5f);//\u5de6\u4e0b\u89d2
glTexCoord2f(1.0f, 0.0f); glVertex3f(0.5f, 0.5f, 0.5f); // \u53f3\u4e0b\u89d2
glTexCoord2f(1.0f, 1.0f); glVertex3f(0.5f, 0.5f, -0.5f);// \u53f3\u4e0a\u89d2
glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f, 0.5f, -0.5f);// \u5de6\u4e0a\u89d2
glEnd();


\u81f3\u6b64, \u6211\u4eec\u77e5\u9053\u4e86\u7eb9\u7406\u5750\u6807\u5982\u4f55\u8d4b\u503c.\u4e14\u770b\u5982\u4f55\u521b\u5efa\u7eb9\u7406:
3 \u4f7f\u7528\u7eb9\u7406\u6620\u5c04
\u7eb9\u7406\u5c31\u662f\u5e94\u7528\u5230\u591a\u8fb9\u5f62\u4e0a\u7684\u56fe\u50cf. \u8fd9\u4e9b\u56fe\u50cf\u53ef\u4ee5\u4ece\u6587\u4ef6\u4e2d\u52a0\u8f7d, \u6216\u662f\u5728\u5185\u5b58\u4e2d\u751f\u6210. \u4e00\u65e6\u4f60\u5c06\u56fe\u50cf\u6570\u636e\u52a0\u8f7d\u5230\u4e86\u5185\u5b58\u4e2d, \u4f60\u9700\u8981\u6307\u5b9a\u5176\u4e3a\u7eb9\u7406\u6620\u5c04\u6765\u4f7f\u7528\u5b83. \u6307\u5b9a\u5176\u4e3a\u7eb9\u7406\u6620\u5c04, \u9996\u5148\u9700\u8981\u751f\u6210\u4e00\u4e2a\u7eb9\u7406\u5bf9\u8c61, \u5176\u4e2d\u5b58\u50a8\u7740\u7eb9\u7406\u7684\u8bf8\u5982\u56fe\u50cf\u6570\u636e, \u5982\u4f55\u5e94\u7528\u7b49\u4fe1\u606f.
\u7eb9\u7406\u662f\u4e00\u4e2aOpenGL\u72b6\u6001, \u56e0\u800c\u901a\u8fc7 glEnable() \u548c glDisable() \u6765\u5f00\u95ed\uff0c \u53c2\u6570\u662f GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAP.

RedBook就是所说的“红宝书”,书名是《OpenGL编程指南》
BlueBook就是所说的“蓝宝书”,书名是《OpenGL超级宝典》
它们很适合初学OpenGL的人看。

这学期刚学的OpenGL,老师给我们推荐说 红宝书适合初学者用,知识体系全面,比较容易入门;
而蓝宝书更像一本工具书,类似于字典,适合编程时查询用。希望能对你有帮助。

  • OpenGL鐨凴edBook鍜BlueBook鏄袱鏈粈涔堟牱鐨勪功?
    绛旓細RedBook灏辨槸鎵璇寸殑鈥滅孩瀹濅功鈥濓紝涔﹀悕鏄OpenGL缂栫▼鎸囧崡銆BlueBook灏辨槸鎵璇寸殑鈥滆摑瀹濅功鈥濓紝涔﹀悕鏄奜penGL瓒呯骇瀹濆吀銆嬪畠浠緢閫傚悎鍒濆OpenGL鐨勪汉鐪嬨
  • 鍗佸ぇopengl鏁欑▼
    绛旓細2.OpenGL Programming Guide(Red Book)銆奜penGL缂栫▼鎸囧崡銆婳penGL缂栫▼鎸囧崡鏄OpenGL鐨缁忓吀鏁欐潗锛岃绉颁负Red Book锛屽唴瀹硅瀹烇紝閫傚悎鏈変竴瀹氱紪绋嬪熀纭鐨勮鑰呭涔犮備功涓粙缁嶄簡OpenGL鐨勫熀鏈蹇点佸浘褰㈢粯鍒躲佸彉鎹佸厜鐓х瓑鍐呭锛屽苟鎻愪緵浜嗗ぇ閲忓疄渚嬪拰浠g爜銆3.OpenGL SuperBible銆奜penGL瓒呯骇瀹濆吀銆婳penGL瓒呯骇瀹濆吀鏄竴鏈潈濞佺殑Open...
  • 姹傜敤opengl缁樺埗鐞冧綋,鐢╟++,骞朵笖鑳藉鏃嬭浆,缂╂斁,骞崇Щ銆傛垨鑰呭彧鐢讳釜鐞冧綋灏...
    绛旓細glutSolidSphere();鎴栬呴渶瑕佺粯鍒舵湁texture鐨勭悆浣 GLUquadricObj *quadPlanet;quadPlanet = gluNewQuadric();gluQuadricTexture(quadPlanet,GL_TRUE);gluSphere(quadPlanet,radius,20,16);gluDeleteQuadric(quadPlanet);鍙傝冭祫鏂欙細opengl red book
  • VS2010杩愯鏃舵棤娉曞惎鍔ㄧ▼搴忕郴缁熸壘涓嶅埌鎸囧畾鏂囦欢鎬庝箞鍥炰簨
    绛旓細鍦╒S2005涓埄鐢ㄥ凡鏈夋枃浠跺垱寤烘柊椤圭洰锛岋紝鍑虹幇閿欒锛歁SVCRTD.lib(crtexew.obj) : error LNK2019: 鏃犳硶瑙f瀽鐨勫閮ㄧ鍙穇WinMain@16锛岃绗﹀彿鍦ㄥ嚱鏁癬__tmainCRTStartup 涓寮曠敤銆侳:\Graphics\C++primer source code\opengl-red-book8-3\8-4image\Debug\8-4image.exe : fatal error LNK1120: 1 涓棤娉...
  • VS2010杩愯鏃舵棤娉曞惎鍔ㄧ▼搴忕郴缁熸壘涓嶅埌鎸囧畾鏂囦欢鎬庝箞鍥炰簨
    绛旓細F:\Graphics\C++primer source code\opengl-red-book8-3\8-4image\Debug\8-4image.exe : fatal error LNK1120: 1 涓棤娉曡В鏋愮殑澶栭儴鍛戒护銆傚師鍥犲氨鍦ㄤ簬锛岃繖涓枃浠舵湰韬槸鎺у埗鍙板舰寮忕殑锛岃屽垱寤虹殑椤圭洰鏄痺in32鐨勶紝鍑洪敊灏变笉濂囨簡銆傞偅鐜板湪鎴戜滑灏遍渶瑕佸皢椤圭洰鐨勭被鍨嬫敼涓簑in32椤圭洰锛岃鎬庢牱鎵嶈兘瀹炵幇win32椤圭洰鍜...
  • VC++6.0杩愯OpenGL 鍑虹幇閿欒Cannot open include file: 'GL/glut...
    绛旓細锛3锛夋妸瑙e帇寰楀埌鐨刧lut.dll鍜実lut32.dll鏀惧埌鎿嶄綔绯荤粺鐩綍涓嬮潰鐨剆ystem32鏂囦欢澶瑰唴銆傦紙鍏稿瀷鐨勪綅缃负锛欳:\Windows\System32锛夎繖鏄潪甯搁噸瑕佺殑鍔ㄦ侀摼鎺ュ簱璁剧疆锛侊紙4锛夊垱寤轰竴涓猈in32 Console Application銆傦紙浠ユ垜鍒涘缓鐨勪负渚嬶紝宸ョ▼鍚嶄负simpleGL锛夛紙5锛夐摼鎺OpenGL libraries:鍦╒isual C++涓厛鍗曞嚮Project锛屽啀鍗曞嚮...
  • C++Builder涓浣曞疄鐜颁笁缁村浘褰
    绛旓細鐢―irectX锛圖3D锛夋垨鑰OpenGL鏉ュ仛锛屽墠鑰呮渶甯歌浜嶹indows锛屽悗鑰呭亸鍚戝骞冲彴銆俤x鐨勮嚜瀛︽暀鏉愮浉瀵瑰涓浜涖傚紑鍙戣澶囬渶瑕佽涓婄浉鍏崇殑浜岃繘鍒舵敮鎸佹枃浠讹紙exe銆乨ll銆乴ib绛夛級鍜宻dk锛坔銆乧pp绛夛級銆傜湡姝e紑鍙戞椂寤鸿浣跨敤灏咲irectX銆丱penGL灏佽濂界殑搴撲互渚垮噺灏戜笉蹇呰鐨勫伐浣溿
  • VS2010 璋冭瘯鐨勬椂鍊欒 鏃犳硶鍚姩绋嬪簭鈥***.exe鈥濈郴缁熸壘涓嶅埌鎸囧畾鐨勬枃浠...
    绛旓細MSVCRTD.lib(crtexew.obj) : error LNK2019: 鏃犳硶瑙f瀽鐨勫閮ㄧ鍙穇WinMain@16锛岃绗﹀彿鍦ㄥ嚱鏁癬__tmainCRTStartup 涓寮曠敤銆侳:\Graphics\C++primer source code\opengl-red-book8-3\8-4image\Debug\8-4image.exe : fatal error LNK1120: 1 涓棤娉曡В鏋愮殑澶栭儴鍛戒护銆傚師鍥犲氨鍦ㄤ簬锛岃繖涓枃浠舵湰韬槸鎺у埗...
  • 扩展阅读:bokep pijat plus plus ... download opay bank ... redmi book 16 ... facebooklite install ... facebook messenger ... opera free download ... chrome free download ... gopro hero11 black ... install play store ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网